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
반응형
'Algorithm > Greedy' 카테고리의 다른 글
[Baekjoon 1911 / Python / 골드5] 흙길 보수하기 (0) | 2024.08.19 |
---|---|
[Baekjoon 7983 / Java / 골드5] 내일 할거야 (0) | 2024.05.06 |
[Baekjoon 1026 / Java / 실버4] 보물 (0) | 2024.05.03 |
[Baekjoon 1931 / python / 실버1] 회의실 배정 (0) | 2024.04.06 |
[Baekjoon 11047 / python / 실버4] 동전 0 (0) | 2024.04.05 |