๋ฌธ์ (์ถ์ฒ: 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 |