문제(출처: https://www.acmicpc.net/problem/10331)
< Miscalculation >
문제 풀이
왼쪽에서 오른쪽으로 계산한 결과와 곱셈 먼저 계산한 결과를 구해 Bob의 답과 비교한다.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class _10331_ { // Miscalculation
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = bf.readLine();
int num = Integer.parseInt(bf.readLine());
int sum = str.charAt(0) - '0';
for (int i = 2; i < str.length(); i += 2) {
int temp = str.charAt(i) - '0';
if (str.charAt(i - 1) == '+') {
sum += temp;
} else {
sum *= temp;
}
}
Stack<Integer> stack = new Stack<>();
int mul = 0, idx = 0;
while (idx < str.length()) {
if (str.charAt(idx) == '*') {
stack.add(stack.pop() * (str.charAt(idx++ + 1) - '0'));
} else if (str.charAt(idx) != '+') {
stack.add(str.charAt(idx) - '0');
}
idx+=1;
}
while (!stack.isEmpty()) {
mul += stack.pop();
}
if (mul == num && sum == num) {
System.out.println("U");
} else if (mul == num) {
System.out.println("M");
} else if (sum == num) {
System.out.println("L");
} else {
System.out.println("I");
}
}
}
변수)
str : 수식 정보
num : Bob의 답
sum : 왼쪽에서 오른쪽 계산한 결과
stack : 곱셈 먼저 계산하기 위한 Stack
mul : 곱셈 먼저 계산한 결과
수식 정보와 Bob의 답을 입력받는다. 수식을 탐색하며 앞에서부터 차례대로 계산한 결과를 sum에 저장한다. Stack에 값을 넣으며 곱셈 먼저 계산한 후 남은 값들을 다 더해 mul에 저장한다.
최종 sum과 mul, Bob의 답인 num을 비교하여 정답을 출력한다.

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
| [Baekjoon] 16652_Email Destruction (0) | 2025.12.09 |
|---|---|
| [Baekjoon] 7318_Parencodings (0) | 2025.12.08 |
| [Baekjoon] 33094_Diet Plan (0) | 2025.12.05 |
| [Baekjoon] 10654_Cow Jog (0) | 2025.12.04 |
| [Baekjoon] 13984_Contest Score (0) | 2025.12.02 |