🌞Algorithm/🔥Baekjoon

[Baekjoon] 10331_Miscalculation

뿌야._. 2025. 12. 10. 12:07
문제(출처: 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