๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/2257)
< ํํ์๋ >
๋ฌธ์ ํ์ด
Stack์ ์ฌ์ฉํด์ ๋ฌธ์ ์์ ๋งํ ๋ช ๋ น๋๋ก ๊ตฌํํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class _2257_ { // ํํ์๋
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = bf.readLine();
Stack<Integer> stack = new Stack<>();
for (int i = 0; i < str.length(); i++) {
Character ch = str.charAt(i);
if (ch == 'C') {
stack.add(12);
} else if (ch == 'O') {
stack.add(16);
} else if (ch == 'H') {
stack.add(1);
} else if (Character.isDigit(ch)) {
int num = stack.pop();
stack.add(num * (ch - '0'));
} else if (ch == '(') {
stack.add(-1);
} else if (ch == ')') {
int num = 0;
while (stack.peek() != -1) {
num += stack.pop();
}
stack.pop();
stack.add(num);
}
}
int result = 0;
while (!stack.isEmpty()) {
result += stack.pop();
}
System.out.println(result);
}
}
Main
๋ณ์)
str : ํํ์
stack : Stack <Integer>
result : ํํ์๋
- ํํ์(str) ์ ๋ ฅ
- ํํ์(str) ํ์
: ํ์(C)๋ผ๋ฉด stack์ 12 ์ถ๊ฐ
: ์ฐ์(O)๋ผ๋ฉด stack์ 16 ์ถ๊ฐ
: ์์(H)๋ผ๋ฉด stack์ 1 ์ถ๊ฐ
: ์ซ์๋ผ๋ฉด ์์ ๊ฐ๊ณผ ๊ณฑํด์ผ ํ๋ฏ๋ก stack์์ popํด์จ ๊ฐ์ ๊ณฑํด์ stack์ ์ถ๊ฐ
: '(' ๋ผ๋ฉด '('๋ฅผ ํ์ํ๊ธฐ ์ํด stack์ -1 ์ถ๊ฐ
: ')' ๋ผ๋ฉด ๊ดํธ ์์ ๊ฐ์ ๋ค ๋ํด์ผ ํ๋ฏ๋ก '('์ ๋ปํ๋ -1์ด ๋์ฌ ๋๊น์ง stack์์ ๊ฐ์ pop ํด์ ๋ํ ํ stack์ ์ ์ฅ
- stack์ ๋ชจ๋ ๊ฐ์ ๊บผ๋ด์ ๋ํ ๊ฐ์ ์ถ๋ ฅ
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 25381_ABBC (0) | 2023.08.30 |
---|---|
[Baekjoon] 25497_๊ธฐ์ ์ฐ๊ณ๋ง์คํฐ ์์ค (0) | 2023.08.29 |
[Baekjoon] 28278_์คํ 2 (0) | 2023.08.25 |
[Baekjoon] 17952_๊ณผ์ ๋ ๋๋์ง ์์! (0) | 2023.08.24 |
[Baekjoon] 3986_์ข์ ๋จ์ด (0) | 2023.08.23 |