๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 17585_Circuit Math

๋ฟŒ์•ผ._. 2025. 7. 17. 12:23
๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/17585)

< Circuit Math >

 

๋ฌธ์ œ ํ’€์ด 

 

AND  : ๋‘˜ ๋‹ค T์ผ ๋•Œ T ๋ฐ˜ํ™˜

OR : ๋‘˜ ์ค‘ ํ•˜๋‚˜๋ผ๋„ T์ผ ๋•Œ T ๋ฐ˜ํ™˜

NOT : T์ด๋ฉด F, F์ด๋ฉด T ๋ฐ˜ํ™˜

 

* ๋˜‘๊ฐ™์€ ์•ŒํŒŒ๋ฒณ์ด ์—ฌ๋Ÿฌ ๋ฒˆ ๋“ฑ์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์•ŒํŒŒ๋ฒณ ๋“ฑ์žฅ ์ˆœ์„œ๋ฅผ ์ €์žฅํ•ด ๋‘๊ณ  i๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

 

my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Stack;
import java.util.StringTokenizer;

public class _17585_ { // Circuit Math

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		int n = Integer.parseInt(bf.readLine());

		st = new StringTokenizer(bf.readLine());
		char arr[] = new char[n];
		for (int i = 0; i < n; i++) {
			arr[i] = st.nextToken().charAt(0);
		}

		st = new StringTokenizer(bf.readLine());
		Stack<Character> stack = new Stack<>();
		ArrayList<Character> list = new ArrayList<>();

		while (st.hasMoreTokens()) {
			char value = st.nextToken().charAt(0);

			if (Character.isAlphabetic(value)) {
				if (list.contains(value)) {
					stack.add(arr[list.indexOf(value)]);
				} else {
					list.add(value);
					stack.add(arr[list.size() - 1]);
				}
			} else if (value == '*') {
				char x = stack.pop();
				char y = stack.pop();
				stack.add((x == 'T' && y == 'T') ? 'T' : 'F');

			} else if (value == '+') {
				char x = stack.pop();
				char y = stack.pop();
				stack.add((x == 'T' || y == 'T') ? 'T' : 'F');
			} else {
				char x = stack.pop();
				stack.add((x == 'F') ? 'T' : 'F');
			}
		}
		System.out.println(stack.pop());
	}
}
๋ณ€์ˆ˜)
n : ๋ฌธ์ž ๊ฐœ์ˆ˜
arr : ๋ฌธ์ž ๊ฐ’
stack : ํšŒ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋Š” Stack
list : ๋“ฑ์žฅํ•˜๋Š” ์•ŒํŒŒ๋ฒณ์„ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•˜๋Š” ArrayList

 

๋ฌธ์ž ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๋ฌธ์ž ๊ฐœ์ˆ˜๋งŒํผ ๋ฌธ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ arr์— ์ €์žฅํ•œ๋‹ค. ํšŒ๋กœ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ํšŒ๋กœ ์—ฐ์‚ฐ์„ ์‹œ์ž‘ํ•œ๋‹ค.

 

1) ์•ŒํŒŒ๋ฒณ์ด๋ผ๋ฉด ์•ŒํŒŒ๋ฒณ ๋“ฑ์žฅ ์ˆœ์„œ์— ๋”ฐ๋ผ ๋ฌธ์ž๋ฅผ stack์— ์ €์žฅ

2) *๋ผ๋ฉด stack์—์„œ ๊ฐ’ 2๊ฐœ๋ฅผ ๊บผ๋‚ด์™€ AND ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ stack์— ์ €์žฅ

3) +๋ผ๋ฉด stack์—์„œ ๊ฐ’ 2๊ฐœ๋ฅผ ๊บผ๋‚ด์™€ OR ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ stack์— ์ €์žฅ

4) -๋ผ๋ฉด stack์—์„œ ๊ฐ’ 1๊ฐœ๋ฅผ ๊บผ๋‚ด์™€ NOT ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ stack์— ์ €์žฅ

 

์ตœ์ข… stack์— ์žˆ๋Š” ๊ฐ’์„ ๊บผ๋‚ด์™€ ๊ฒฐ๊ณผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 9400_Calculate the Fence Needed  (3) 2025.07.21
[Baekjoon] 4466_A Smart Brain is a Tasty Brain  (3) 2025.07.18
[Baekjoon] 8594_Program  (0) 2025.07.16
[Baekjoon] 9523_Arithmetic with Morse  (1) 2025.07.15
[Baekjoon] 14210_Kartomat  (0) 2025.07.14