본문 바로가기

PS/백준

[BOJ] 백준 1541 잃어버린 괄호 (Swift)

반응형

문제

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

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

풀이

괄호를 적절히 쳐서 식을 최소로 만들기 위해 어떤 방법을 사용해야 할까요?

모든 수식이 "+"라면 양수를 전부 더해주는 방법 밖에 없습니다.
하지만 "-"가 하나라도 있다면 어떨까요?

10 + 20 - 30 + 40 이란 식이 있다면 괄호를 어떻게 쳐줘야할까요?
10 + 20 - (30 + 40) 처럼 괄호를 쳐주어야 최소 값이 나오겠죠?

10 + 20 - 30 - 40 + 50 - 60 이라면..?
10 + 20 - 30 - (40 + 50) - 60 이겠죠??

괄호를 적절히 치면 "-"식이 나온 이후의 모든 수를 빼는 작업이 가능합니다.

먼저, 식을 입력받고, "-"를 기준으로 문자열을 나누어 줍시다.
그러면 첫번째는 "-"가 나오기 전의 수식들이 들어있을 것이고, 두번째 이후 부터는 "-" 가 나온 이후의 수식일 것입니다.

첫번째 수식에 있는 양수는 전부 더해주고, 두번째 이후에 나오는 양수들을 전부 빼주면 최소값을 구할 수 있습니다.

소스코드

후기

"-" 이후의 수들을 전부 빼주는 아이디어를 떠올렸다면 쉽게 풀 수 있는 문제였습니다.
직접 수식도 적어보고 괄호를 쳐보면서 아이디어를 떠올렸습니다.

반응형