https://www.acmicpc.net/problem/1918
1918๋ฒ: ํ์ ํ๊ธฐ์
์ฒซ์งธ ์ค์ ์ค์ ํ๊ธฐ์์ด ์ฃผ์ด์ง๋ค. ๋จ ์ด ์์์ ํผ์ฐ์ฐ์๋ ์ํ๋ฒณ ๋๋ฌธ์๋ก ์ด๋ฃจ์ด์ง๋ฉฐ ์์์์ ํ ๋ฒ์ฉ๋ง ๋ฑ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ -A+B์ ๊ฐ์ด -๊ฐ ๊ฐ์ฅ ์์ ์ค๊ฑฐ๋ AB์ ๊ฐ์ด *๊ฐ ์๋ต๋๋ ๋ฑ์
www.acmicpc.net
์ค์ํ๊ธฐ์์ผ๋ก ๋์ด์๋ ๊ฒ์ ํ์ ํ๊ธฐ์์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ด๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์คํ์ ์ฌ์ฉํด ๋ฐ๊พผ๋ค.
์ด๋ฒ ๋ฌธ์ ๋ ๋คํํ ํ๋ฒ์ ๋ง์์ ์ค๋ต์ฝ๋๋ฅผ ์ฌ๋ฆฌ์ง ์์๋ ๋๋ค.
์ค๋ต๋ ธํธ(ํธ๋ ๋์ ์ฌ๊ณ ๊ณผ์ ๋ฐ ๊ฐ์ ์ )
ํ์ ํ๊ธฐ์์ผ๋ก ๋ฐ๊ฟ๋๋, ์๋ ๊ทธ๋ฅ ์ถ๋ ฅํ๊ณ , ์ฐ์ฐ์๋ฅผ ์คํ์ ๋ด์์ ์ฐ์ ์์์ ๋ฐ๋ผ ์ฒ๋ฆฌํด์ผ๋๋ค. ๋ง์ฝ ๊ดํธ๊ฐ ์๋ค๋ฉด ์ฌ๋ ๊ดํธ๋ ๊ทธ๋ฅ ๋ฃ๊ณ , ๋ซ๋ ๊ดํธ๊ฐ ์ค๊ธฐ ์ ๊น์ง ๊ณ์ ์คํ์ ์ฐ์ ์์๋ฅผ ๋ณด๋ฉฐ ์ฐ์ฐ์๋ฅผ ๋ฃ๋ค๊ฐ ๋ซ๋ ๊ดํธ๊ฐ ์ค๋ฉด ์ฌ๋ ๊ดํธ๊ฐ ์ฌ ๋ ๊น์ง ์น ๋นผ๋ฒ๋ฆฌ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค. ์ด๋ ๊ฒ ๋ฐ๋ณตํ๋ฉด ์์ฃผ ์ฝ๊ฒ ํ์ ํ๊ธฐ์์ ์์ฑํ ์ ์๋ค.
ํ์ํ๊ธฐ์์ผ๋ก ๋ง๋ค์ด์ง ์์ ์ฐ์ฐํ๋ ๊ฑด ๋ ์ฝ๋ค. ์์์๋ถํฐ ์คํ์ ๋ฃ์ผ๋ฉด์, ์ฐ์ฐ์๋ฅผ ๋ง๋๋ฉด ์คํ์ ๋ฃ์ง ์๊ณ pop์ ๋ ๋ฒ ํ๋ค. ์ฒซ๋ฒ ์งธ pop์ ๋ค์ ์ฌ ํผ์ฐ์ฐ์์ด๊ณ , ๋๋ฒ์งธ pop์ด ์์ ์ฌ ํผ์ฐ์ฐ์๋ค. ์ด์ ๊ทธ ๋๊ฐ๋ฅผ ์ฐ์ฐํด์ ๋ค์ ์คํ์ ๋ฃ๊ณ , ์ด๋ ๊ฒ ์คํ์ ์์๊ฐ ํ๊ฐ ๋จ์ ๋ ๊น์ง ๋ฐ๋ณตํ๋ฉด ์ฐ์ฐ์ด ๋๋๋ค.
์ฐ์ฐํ๋ ๋ฌธ์ ๋ ์๋ ๋ฌธ์ ๋ฅผ ํ๋ฉด ๋๋ค.
https://www.acmicpc.net/problem/1935
1935๋ฒ: ํ์ ํ๊ธฐ์2
์ฒซ์งธ ์ค์ ํผ์ฐ์ฐ์์ ๊ฐ์(1 ≤ N ≤ 26) ๊ฐ ์ฃผ์ด์ง๋ค. ๊ทธ๋ฆฌ๊ณ ๋์งธ ์ค์๋ ํ์ ํ๊ธฐ์์ด ์ฃผ์ด์ง๋ค. (์ฌ๊ธฐ์ ํผ์ฐ์ฐ์๋ A~Z์ ์๋๋ฌธ์์ด๋ฉฐ, A๋ถํฐ ์์๋๋ก N๊ฐ์ ์๋๋ฌธ์๋ง์ด ์ฌ์ฉ๋๋ฉฐ, ๊ธธ์ด
www.acmicpc.net
์ฃผ์ํ ์ ์ด๋ผ๊ณ ๋ ์คํ์ pop์ด๋ peek ์ํฌ ๋ ์คํ์ด ๋น์ด์๋ ์ง ์ ํ์ธํด์ฃผ๋ ๊ฒ ๋ฐ์ ์๋ค!! ๋์ด๋๋ฅผ ๊ฐ๋ ค๋๊ณ ํธ๋ ์ ์ฅ์์ ๊ฐ์ธ์ ์ธ ๊ฐ์์ผ๋ก๋ ์ด๊ฒ ์ ๊ณจ๋ 2์ธ์ง ๋ชจ๋ฅด๊ฒ ๋ค. ํ์ํ๊ธฐ์์ ๊ฐ๋ ๋ง ์๊ณ ์๋ค๋ฉด ์์ฝ๊ฒ ํ๋ฆฌ๋ ๋ฌธ์ ๋ค.
์ ๋ต ์ฝ๋๊ฐ ๊น๋ํ๊ฒ ์ ํ์ง์์์ง๋ง ์ฝ๋ ๋ฐ๋ ๋ฌธ์ ๊ฐ ์์? ๊ฒ ๊ฐ๋ค.
์ ๋ต์ฝ๋
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.next();
StringBuilder sb = new StringBuilder();
Stack<Character> op = new Stack();
for (int i = 0; i < input.length(); i++) {
char t = input.charAt(i);
if ('A' <= t && t <= 'Z') {
sb.append(t);
} else {
// ์ฐ์ฐ์ ์ฐ์ ์์๋ - + ๊ฐ๊ณ * / ๊ฐ ๋๋ค
// ๋ฝ์์ผ ๋ ๊ฒฝ์ฐ -> - +์ผ ๋ - + * /๋ฅผ ๋ง๋๋ฉด ๋ฝ์์ผ๋จ.
// * / ์ผ ๋ * / ๋ฅผ ๋ง๋๋ฉด ๋ฝ์์ผ๋จ.
if (t == '(') {
op.push(t);
}
if (t == ')') {
while (!op.isEmpty()) {
if (op.peek() == '(')
break;
else
sb.append(op.pop());
}
op.pop(); // ( ๋ ๋นผ์ฃผ๊ธฐ
} else {
if (!op.isEmpty()) {
if (t == '*' || t == '/') {
if (op.peek() == '+' || op.peek() == '-')
op.push(t);
else {
while (true) { // ๊ฐ๊ฑฐ๋ ๋์ ์ฐ์ ์์๊ฐ ์๋๋ ๊น์ง
if (!op.isEmpty() && (op.peek() == '*' || op.peek() == '/'))
sb.append(op.pop());
else
break;
}
op.push(t);
}
} else if (t == '-' || t == '+') {
if (op.peek() == '(') {
op.push(t);
} else {
while (!op.isEmpty()) { // ๊ฐ๊ฑฐ๋ ๋์ ์ฐ์ ์์๊ฐ ์๋๋ ๊น์ง
if (op.peek() == '(')
break;
else
sb.append(op.pop());
}
op.push(t);
}
}
} else {
op.push(t);
}
}
}
}
while (!op.isEmpty()) {
sb.append(op.pop());
}
System.out.println(sb);
}
}
๋์์ด ๋๋ค๋ฉด ๋๊ธ์ด๋ ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์ธ์! ๋ก๊ทธ์ธ ์ํด๋ ๋ฉ๋๋ค ^_^
'OJ๐ผ > ์ค๋ต๋ ธํธ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SWEA][JAVA] 1949. [๋ชจ์ SW ์ญ๋ํ ์คํธ] ๋ฑ์ฐ๋ก ์กฐ์ฑ (0) | 2024.03.01 |
---|---|
[BOJ][JAVA] 14502: ์ฐ๊ตฌ์ (0) | 2024.03.01 |
[BOJ][JAVA] 14267๋ฒ: ํ์ฌ ๋ฌธํ 1 (0) | 2024.02.12 |
[BOJ][JAVA] 11725๋ฒ: ํธ๋ฆฌ์ ๋ถ๋ชจ์ฐพ๊ธฐ (0) | 2024.02.10 |
[BOJ][JAVA] 1012๋ฒ: ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2024.02.07 |