[백준/Python] 1541 - 잃어버린 괄호

orangesnail·2024년 9월 22일

백준

목록 보기
35/169
post-thumbnail

https://www.acmicpc.net/problem/1541

풀이 참고


구현 과정

해당 식을 최소로 만들려면 뺄셈이 나오는 순간, - 이후부터 다음 -가 나오기 전까지의 모든 수를 괄호로 묶어주면 된다. 빼는 수가 많아져야지 전체 값이 작아지기 때문이다.

따라서 - 를 기준으로 split()를 써주면 된다. 아래처럼 코드를 작성하면 식을 입력받고, -를 기준으로 분리된 항목들이 리스트로 저장된다.

n = input()
m = n.split('-')

그 다음엔 -가 붙은 식의 첫 번째 부분을 따로 검사해준다. 첫 번째 부분은 -를 떼지 않고, 음수로 처리해 계산해야지 전체 값이 최소가 될 수 있기 때문이다.

res = sum(map(int, m[0].split('+')))

나머지 요소들도 처리해준다. 이미 처리한 첫 번째 요소를 제외하고(인덱스 1부터), +를 기준으로 분리된 숫자들을 모두 더한 뒤, res에서 빼준다. 이 과정은 - 이후의 수를 괄호로 묶어 계산된 합을 전체에서 빼는 것과 같다.

for num in m[1:]:
    res -= sum(map(int, num.split('+')))

그 다음 res를 출력해주고 끝낸다.


전체 코드

n = input()
m = n.split('-')

res = sum(map(int, m[0].split('+')))

for num in m[1:]:
    res -= sum(map(int, num.split('+')))

print(res)

파이썬에 많이 익숙하지 않아서 정답 코드를 한줄한줄 뜯어보면서 구현했는데, 이렇게 꼼꼼하게 알아둘수록 스스로 코드를 짜는 능력이 늘 것 같다!

profile
초보입니다. 피드백 환영합니다 😗

0개의 댓글