Tags
- Dynamic Programming
- dfs
- ๊ตฌํ
- ๋๋น ์ฐ์ ํ์
- DP
- LV2
- ์๋ฎฌ๋ ์ด์
- ๊ทธ๋ํ ์ด๋ก
- sort
- CodingTest
- BFS
- SpringBoot
- ๊ทธ๋ํ ํ์
- Study
- stack
- Java
- greedy
- ๋ฌธ์์ด
- ๊น์ด ์ฐ์ ํ์
- Brute Force Algorithm
- ๋ฐฑํธ๋ํน
- ์ ์๋ก
- Python
- BOJ
- ๊ต์ฌ
- PGM
- ์๋ฃ๊ตฌ์กฐ
- ์ํ
- ์ ๋ ฌ
- queue
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_1918 : ํ์ ํ๊ธฐ์ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์ค์ ํ๊ธฐ์์ ํ์ ํ๊ธฐ์์ผ๋ก ๋ณํํด ์ถ๋ ฅํ๋ค.
- ์ ๋ ฅ๋๋ ํผ ์ฐ์ฐ์๋ ์ํ๋ฒณ ๋๋ฌธ์, ์ฐ์ฐ์๋ "+-*/()"์ 6๊ฐ์ง๊ฐ ์ฌ์ฉ๋๋ค.
- ์คํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด์ ํ์ ํ๊ธฐ์์ผ๋ก ๋ณํํ ์ ์๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.*;
public class Main {
private static class MyStack {
private int pointer;
private char[] stack;
public MyStack() {
this.pointer = 0;
stack = new char[100];
}
public void push(char c) {
stack[pointer++] = c;
}
public char pop() {
return stack[--pointer];
}
public boolean isEmpty() {
return pointer == 0;
}
public char peek() {
if (pointer == 0) return '\0';
else return stack[pointer - 1];
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
char[] input = br.readLine().toCharArray(); // A : 65, Z : 90
MyStack stack = new MyStack();
for (char c : input) {
if (c >= 65 && c <= 90) // ์
๋ ฅ ๋ฌธ์๊ฐ ์ํ๋ฒณ์ผ ๊ฒฝ์ฐ
sb.append(c);
else { // ์
๋ ฅ ๋ฌธ์๊ฐ ์ฐ์ฐ์์ผ ๊ฒฝ์ฐ
if (c == '+' || c == '-') { // '+' or '-'
if (stack.peek() == '*' || stack.peek() == '/') {
while (!stack.isEmpty() && stack.peek() != '(') {
sb.append(stack.pop());
}
} else if (stack.peek() == '+' || stack.peek() == '-')
sb.append(stack.pop());
stack.push(c);
} else if (c == '*' || c == '/') { // '*' or '/'
if (stack.peek() == '*' || stack.peek() == '/') {
sb.append(stack.pop());
}
stack.push(c);
} else if (c == '(') { // '('
stack.push(c);
} else { // ')'
while (!stack.isEmpty()) {
char p = stack.pop();
if (p == '(') {
break;
}
sb.append(p);
}
}
}
}
while (!stack.isEmpty())
sb.append(stack.pop());
bw.write(sb.toString());
bw.flush();
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์คํ์ ํจ์จ์ด ์กฐ๊ธ ์์ข๋ค๊ณ ์๊ณ ์์ด์ ์ง์ ํ์ํ ๊ธฐ๋ฅ๋ง ์ถ๊ฐํ MyStack ํด๋์ค๋ฅผ ๋ง๋ค์๋ค.
- push, pop, ์์ ์ ๋ฌด ํ์ธ, ๊ฐ์ฅ ์ต๊ทผ ์์ ํ์ธ์ ๊ธฐ๋ณธ ๊ธฐ๋ฅ๋ง ๊ตฌํํ๋ค.
- ์ ๋ ฅ๋ ์ค์ ํ๊ธฐ์์ char๋ฐฐ์ด๋ก ๋ณํํด input์ ์ ์ฅํ๋ค.
- ๋ฌธ์ ํ๋์ฉ ๊ฒ์ฌํ๋ฉฐ ๊ณ์ฐ ํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
- ์ํ๋ฒณ์ ์์คํค์ฝ๋ ๊ฐ์ ํ์ธํด์ A๋ถํฐ Z๊น์ง๋ ๋ฐ๋ก ์ถ๋ ฅ์ ์ํด StringBuilder์ ์ ์ฅํ๋ค.
- '+'์ '-'๋ ์ง์ ์ ๊ฐ์ ๋ ๋ฒจ์ ์ฐ์ฐ์๊ฐ ์์์ผ๋ฉด ์คํ์์ ๊บผ๋ด ์ถ๋ ฅํ๊ณ , '*'์ '/'๊ฐ ์์๋ค๋ฉด ์ฌ๋ ๊ดํธ๋ฅผ ๋ง๋๊ฑฐ๋ ์คํ์ด ๋ชจ๋ ๋น ๋๊น์ง ๋ชจ๋ ์์๋ฅผ ๊บผ๋ด์ ์ถ๋ ฅํ๋ค.
- ๊ทธ ํ ๋ฐฉ๊ธ ์ ๋ ฅ๋ ์์๋ฅผ ์คํ์ ์ถ๊ฐํ๋ค.
- '*'์ '/'๋ ๊ฐ์ ๋ ๋ฒจ์ ์ฐ์ฐ์๊ฐ ์์ผ๋ฉด ๊บผ๋ด์ ์ถ๋ ฅํ๊ณ , ๋ฐฉ๊ธ ์ ๋ ฅ๋ ์์๋ฅผ ์คํ์ ์ถ๊ฐํ๋ค.
- ์ฌ๋ ๊ดํธ๋ ๋ฐ๋ก ์คํ์ ์ถ๊ฐํ๋ค.
- ๋ซ๋ ๊ดํธ๋ ์ฌ๋ ๊ดํธ๋ฅผ ๋ง๋ ๋ ๊น์ง ์ฐ์ฐ์๋ค์ ์คํ์์ ๊บผ๋ด ์ถ๋ ฅํ๋ค.
- ์ ๋ ฅ๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ์ผ๋ฉด, ์คํ์ ๋จ์ ์ฐ์ฐ์๋ฅผ ๋ชจ๋ ๊บผ๋ด์ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- ์คํ์ ์ง์ ๊ตฌํํ ๊ฑด ๊ฑฐ์ ์์๋๋ฐ, ์ข์ ์ฐ์ต์ด ๋ ๊ฒ ๊ฐ๋ค.
- ํนํ ๋น์ฅ pushํ ๋ ๊ฐ์ ์ ์ฅํ ์ธ๋ฑ์ค๋ฅผ pointer๊ฐ์ผ๋ก ์ค์ ํ๋๋ฐ, pop๊ณผ peekํ ๋๋ -1์ด ๋์ด์ผ ํ๋ ๊ฑธ ๋ชจ๋ฅด๊ณ ์๋ชป ์ฌ์ฉํด์ ์ค๋ฅ๊ฐ ๋ฌ์๋ค.
- ๊ณจ๋ 2์น๊ณ ๋ ๊ธฐ๋ณธ์ ์ธ ์๋ฃ๊ตฌ์กฐ๋ผ ์ฝ๊ฒ ํ๋ฆฐ ๊ฒ ๊ฐ๋ค. ๋ค๋ง ์ ๋ต๋ฅ ์ด ๋ฎ์ ์ด์ ์ ๊ฐ์ ๊ฒ ๊ฐ์๋ฐ, ๋ฐ๋ก๋ฅผ ์ฐพ๋๊ฒ ๋๋ฌด ๋ฒ๊ฑฐ๋ก์์ ํ
์คํธ ์ผ์ด์ค๋ฅผ ๊ทธ๋ฅ ๋ฃ์ด๋ณด๋ ์์ผ๋ก ์ค๋ฅ๋ฅผ ์ก์ ๊ฒ ๊ฐ๋ค.
- +-๋ ์ถ๊ฐ ์กฐ๊ฑด 2๊ฐ, */๋ ์ถ๊ฐ์กฐ๊ฑด 1๊ฐ ๋ผ๋ ์ ์ฝ๋์ ๊ฒฐ๊ณผ ๊ฐ์ด ๋ํ ์ผํ ํ์ธ์ด ํ์ํ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_2206 : ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ (0) | 2023.08.06 |
---|---|
BOJ_2096 : ๋ด๋ ค๊ฐ๊ธฐ (0) | 2023.08.03 |
BOJ_1753 : ์ต๋จ๊ฒฝ๋ก (0) | 2023.07.02 |
BOJ_1504 : ํน์ ํ ์ต๋จ ๊ฒฝ๋ก (0) | 2023.06.28 |
BOJ_1238 : ํํฐ (0) | 2023.06.27 |