Algorithm/Greedy
[Baekjoon 1541 / python / 실버2] 잃어버린 괄호
양선규
2024. 4. 5. 16:55
728x90
반응형
string = input().split('-')
result = 0
for i in string[0].split('+'):
result += int(i)
for i in string[1:]:
for j in i.split('+'):
result -= int(j)
print(result)
그리디 알고리즘 문제이다.
문제 원리는 매우 간단하다. 숫자, '+', '-' 세 가지로만 구성된 문자열이 주어진다. 숫자로 시작해서 숫자로 끝나고, 연산자는 숫자 사이사이에 온다. 여기서 괄호를 원하는 곳에 추가해, 가장 작은 값을 만들어내면 된다.
근데 조금 생각해보면 알 수 있겠지만, 첫번째로 등장하는 '-' 이후의 값들은 전부 뺄 수 있다. 그리고 '-' 이전의 값들은 전부 더하면 된다. 문제의 원리는 쉽다.
하지만 코드로 작성하는게 좀 골치아프다. 이렇게 저렇게 계속 시행착오를 겪었지만 결국 해결할 수 있었다.
처음 입력받을 때 split('-') 해서 받는게 좋다는 것과, split할 때 기준으로 삼을 문자열이 대상에 없어도 문제 없다는 걸 깨달은 뒤였다.
728x90
반응형