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
반응형