Today's special moments become memories of tomorrow.

BOJ

[백준 1541번] 잃어버린 괄호 (java)

lotus lee 2021. 3. 4. 17:38

 

1541번: 잃어버린 괄호

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

www.acmicpc.net

입력받은 수식의 결과가 최소가 되기 위해서는 먼저 모든 더하기 연산을 한 후, 빼기 연산을 해주면 된다.

 

우선 입력받은 문자열을 '-'을 기준으로 나눠서 문자열 배열에 담는다.

입력받은 문자열이 55-50+40 이면 "55""50+40" 로 나누어진다. arr[0] = "55", arr[1] = "50+40"

나누어진 문자열에 '+'가 포함되어 있으면 더하기 연산을 진행한 후 결과값으로 대체한다.

 

먼저 "55"에는 '+' 문자가 없기 때문에 아무런 처리도 하지 않는다.

"50+40"의 경우, '+' 문자가 존재하므로 연산을 해줘야 한다.

'+' 을 기준으로 나눈 후 각 수들을 더해서 합을 구한다. 50 과 40을 더하면 90이 된다. arr[1]를 "90" 으로 대체해준다.

 

arr[0] = "55", arr[1] = "90"

 

이제 수식에 존재하는 모든 더하기 연산은 끝났다.

arr배열에 남아있는 수들을 차례대로 빼기 연산 해준다.

Integer.parseInt(arr[0]) - Integer.parseInt(arr[1]) = 55 - 90 = -35

 

arr배열에 남아있는 모든 수들을 빼기 연산한 결과는 -35이 된다.

그러므로 55-50+40 의 최소 결과는 -35이다.

 

소스코드 :