2023. 10. 27. 09:45ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1232
-> ์ด์ ๋ฌธ์ ํ์ด
2. ๊ดํธ ๋ฌธ์ ์ ๊ฑฐ
์ค๋ช
์ ๋ ฅ๋ ๋ฌธ์์ด์์ ์๊ดํธ ( ) ์ฌ์ด์ ์กด์ฌํ๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๊ณ ๋จ์ ๋ฌธ์๋ง ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ ๋ ฅ
์ฒซ ์ค์ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๋ฌธ์์ด์ ๊ธธ์ด๋ 100์ ๋์ง ์๋๋ค.
์ถ๋ ฅ
๋จ์ ๋ฌธ์๋ง ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
(A(BC)D)EF(G(H)(IJ)K)LM(N)
์์ ์ถ๋ ฅ 1
EFLM
๋ฌธ์ ํ์ด 1
public String solution(String str)
{
String answer = "";
Stack<Character> stack = new Stack<>();
for (char c : str.toCharArray())
{
if (c == '(')
{
stack.push(c);
} else if (c == ')'){
stack.pop();
} else {
if (stack.isEmpty()) answer += c;
}
}
return answer;
}
๐ฉ๐ป : ์ด ๋ฌธ์ ๋ ์ด ์ ํ์ด์ ๊ฑฐ์ ๋น์ทํ๊ฒ ํ ์ ์๋ค. ๊ดํธ ์์ ์๋ ๋ฌธ์๋ stack์ ๋ฃ์ง ์๊ณ , '(' ๋ฅผ stack์ push ํ๋ค๊ฐ ')' ๋ฅผ ๋ง๋๋ฉด pop ํ๋ฉด ๋๊ณ , '('์ ')'๊ฐ ์๋ ๋, stack์ด ๋น์ด์๋ค๋๊ฑด ๊ดํธ ๋ฌธ์๊ฐ ์ ๊ฑฐ๋์๋ค๋ ์๊ธฐ์ด๋ฏ๋ก ๊ทธ ๋๋ answer ๋ฌธ์์ด์ ๋ฌธ์๋ฅผ ๋ํ๋ฉด ๋๋ค.
๋ฌธ์ ํ์ด 2
public String solution2(String str)
{
String answer = "";
Stack<Character> stack = new Stack<>();
for (char c : str.toCharArray())
{
if (c == ')') {
while (stack.pop() != '('); // pop์ ๊บผ๋ด๊ณ ๊ทธ ๊บผ๋ธ๊ฐ์ ๋ฐํํ๋ค.
}else
{
stack.push(c);
}
}
for (int i = 0; i< stack.size(); i++)
{
answer += stack.get(i);
}
return answer;
}
๐พ : ๊ฐ์ฌ๋์ ์ฐ์ ')' ์๋ ๋ฌธ์๋ stack์ ๋ชจ๋ push ํ๊ณ , ๊ทธ ๋ค์์ ')' ์ด๋ฉด stack์์ ์ด์ pop๋ฅผ ํด์ฃผ๋๋ฐ
์ด๋ pop() ๋ฉ์๋๋ stack์์ ๊บผ๋ธ ๋ค์, ํด๋น ๊บผ๋ธ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. ๋ฐ๋ผ์ pop๋ฅผ ํ๊ณ ๋ฐํํ ๋ฌธ์๊ฐ '(' ์ด๋ฉด '(' ๊ณผ ')' ์ฌ์ด์ ์๋ ๋ฌธ์๊น์ง ๋ชจ๋ pop ํ๋ค๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ while (stack.pop() != '(')) ๋ก ์กฐ๊ฑด๋ฌธ์ ๊ฑธ์ด์ฃผ๋ฉด ๋๋ค.
stack.pop() == '(' ๋ผ๋ ๊ฑด '(' ๊น์ง pop ํ๋ค๋ ๊ฒ์ด๋ค.
๊ทธ ๋ค์ stack์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋๋ฉด์ stack.get(i)๋ฅผ ํตํด ๊ฐ์ ๊บผ๋ด๊ณ answer์ ๋ํด์ฃผ๋ฉด ๋๋ค.