#️⃣문제
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다. 그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.
괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.
#️⃣ 입력
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.
#️⃣ 출력
첫째 줄에 정답을 출력한다.
✅ 풀이 Point
1️⃣ - 부호가 한 번이라도 나오면 그 뒤의 숫자들은 다 더해서 - 부호가 나오기 전의 숫자의 합에서 뺌.
- ex) 10 + 20 - 20 + 20 - 30 - 40 → 10 + 20 - (20 + 20) - 30 - 40
✅ 정답
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), "-+", true);
int ans = 0;
int temp = 0;
boolean flag = true;
while (st.hasMoreTokens()) {
String s = st.nextToken();
if (s.equals("+")) continue;
else if (s.equals("-")) flag = false;
else {
if (flag) ans += Integer.parseInt(s);
else temp += Integer.parseInt(s);
}
}
System.out.println(ans - temp);
}
}
반응형
'Algorithm > Java' 카테고리의 다른 글
[백준 : 실버 1] Java BJ20922 겹치는 건 싫어 (0) | 2024.03.14 |
---|---|
[백준 : 골드 4] Java BJ1261 알고스팟 (1) | 2024.03.13 |
[백준 : 골드 3] Java BJ17135 캐슬 디펜스 (0) | 2024.03.10 |
[백준 : 골드 4] BJ1647 도시 분할 계획 (0) | 2024.03.06 |
[백준 : 골드 4] Java BJ5052 전화번호 목록 (0) | 2024.03.03 |