
5.2. ๊ดํธ๋ฌธ์์ ๊ฑฐ
๋ฌธ์
์ ๋ ฅ๋ ๋ฌธ์์ด์์ ์๊ดํธ ( ) ์ฌ์ด์ ์กด์ฌํ๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๊ณ ๋จ์ ๋ฌธ์๋ง ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑ
์ ๋ ฅ
(A(BC)D)EF(G(H)(IJ)K)LM(N)
์ถ๋ ฅ
EFLM
ํ์ด
import java.util.*;
public class Main {
public String solution(String str) {
String answer = "";
Stack<Character> stack = new Stack<>();
for (char x : str.toCharArray()) {
if (x == ')') {
while (stack.pop() != '(')
;
} else
stack.push(x);
}
for (int i = 0; i < stack.size(); i++) {
answer += stack.get(i);
}
return answer;
}
public static void main(String[] args) throws Exception {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.next();
System.out.println(T.solution(str));
}
}
์
๋ ฅ ๋ฌธ์์ด์ ๋ฌธ์ ํ๋์ฉ ์กฐํํ์ฌ ๋ซ๋ ๊ดํธ๊ฐ ๋์ค๋ฉด
stack์ ์ต์๋จ์ ๊ฐ์ ๋นผ์ ์ฌ๋ ๊ดํธ๊ฐ ๋์ฌ ๋๊น์ง ๋ฐ๋ณต
pop()์ ํด์คฌ์ผ๋ stack์์๋ ๊ฐ์ฅ ์๋จ์ ๊ฐ(๋ง์ง๋ง์ ๋ค์ด๊ฐ ๊ฐ)์ด ์ญ์ ๋๋ค.
๋ซ๋ ๊ดํธ๊ฐ ์๋ ๊ฒฝ์ฐ stack์ push ํด ์ค๋ค.
stack์ ๋ค์ด๊ฐ ์์๋๋ก ์ถ๋ ฅ์ ํด์ค์ผ ํ๋ฏ๋ก
for ๋ฌธ์ ๋๋ ค get() ๋ฉ์๋๋ก stack์ 0๋ฒ์งธ ์ธ๋ฑ์ค์ ์ ๊ทผํ์ฌ
answer์ ๋ฌธ์๋ฅผ ๋ถ์ฌ์ค๋ค.
๋ฉ๋ชจ
- stack.get(i)
'๐ ์๊ณ ๋ฆฌ์ฆ > ์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ

5.2. ๊ดํธ๋ฌธ์์ ๊ฑฐ
๋ฌธ์
์ ๋ ฅ๋ ๋ฌธ์์ด์์ ์๊ดํธ ( ) ์ฌ์ด์ ์กด์ฌํ๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๊ณ ๋จ์ ๋ฌธ์๋ง ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑ
์ ๋ ฅ
(A(BC)D)EF(G(H)(IJ)K)LM(N)
์ถ๋ ฅ
EFLM
ํ์ด
import java.util.*;
public class Main {
public String solution(String str) {
String answer = "";
Stack<Character> stack = new Stack<>();
for (char x : str.toCharArray()) {
if (x == ')') {
while (stack.pop() != '(')
;
} else
stack.push(x);
}
for (int i = 0; i < stack.size(); i++) {
answer += stack.get(i);
}
return answer;
}
public static void main(String[] args) throws Exception {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.next();
System.out.println(T.solution(str));
}
}
์
๋ ฅ ๋ฌธ์์ด์ ๋ฌธ์ ํ๋์ฉ ์กฐํํ์ฌ ๋ซ๋ ๊ดํธ๊ฐ ๋์ค๋ฉด
stack์ ์ต์๋จ์ ๊ฐ์ ๋นผ์ ์ฌ๋ ๊ดํธ๊ฐ ๋์ฌ ๋๊น์ง ๋ฐ๋ณต
pop()์ ํด์คฌ์ผ๋ stack์์๋ ๊ฐ์ฅ ์๋จ์ ๊ฐ(๋ง์ง๋ง์ ๋ค์ด๊ฐ ๊ฐ)์ด ์ญ์ ๋๋ค.
๋ซ๋ ๊ดํธ๊ฐ ์๋ ๊ฒฝ์ฐ stack์ push ํด ์ค๋ค.
stack์ ๋ค์ด๊ฐ ์์๋๋ก ์ถ๋ ฅ์ ํด์ค์ผ ํ๋ฏ๋ก
for ๋ฌธ์ ๋๋ ค get() ๋ฉ์๋๋ก stack์ 0๋ฒ์งธ ์ธ๋ฑ์ค์ ์ ๊ทผํ์ฌ
answer์ ๋ฌธ์๋ฅผ ๋ถ์ฌ์ค๋ค.
๋ฉ๋ชจ
- stack.get(i)