https://programmers.co.kr/learn/courses/30/lessons/12973
ํ๋ฆฐ ์ฝ๋
class Solution
{
static int solution(String s){
StringBuilder sb = new StringBuilder(s);
while(true) {
boolean flag = true;
for(int i=0; i<sb.length()-1; i++) {
// ๊ฐ์ ์ํ๋ฒณ์ด 2๊ฐ ๋ถ์ด์๋ ์ง
if(sb.charAt(i) == sb.charAt(i+1)) {
sb.delete(i, i+2); // i, i+1 ๋ฌธ์ ์ ๊ฑฐ
flag = false;
break;
}
}
// ๋ฌธ์์ด์ ๋ชจ๋ ์ ๊ฑฐํ๊ฑฐ๋, ์ ๊ฑฐํ ๋ฌธ์์ด์ด ์์๊ฒฝ์ฐ ํ์ถ
if(sb.length() == 0 || flag)
break;
}
if(sb.length() == 0)
return 1;
else
return 0;
}
}
ํ์ด
๋ฌธ์ ๋ฅผ ๋ณด๊ณ ๋ฌธ์์ด์ ์ ๊ฑฐํ๊ธฐ ์ฌ์ด StringBuilder๋ก ๋ณํํ๊ณ ,
๋ชจ๋ ๋ฌธ์์ด์ ํ์ํ๋ฉฐ ๊ฐ์ ์ํ๋ฒณ์ด 2๊ฐ ๋ถ์ด์๋ ์ง์ผ๊ฒฝ์ฐ, ์ ๊ฑฐํ๋ค.
๋ง์ฝ ๋ฌธ์์ด์ ๋ชจ๋ ์ ๊ฑฐํ๊ฑฐ๋, ์๋๋ฉด ๋ฌธ์์ด์ ํ์ํ๋ฉฐ ์ ๊ฑฐํ ๋ฌธ์๊ฐ ์๋๊ฒฝ์ฐ while๋ฌธ์ ํ์ถํ๋ค.
๋ฌธ์์ด์ ๊ธธ์ด๊ฐ 0์ด๋ฉด 1, ๊ธธ์ด๊ฐ 0์ด ์๋๋ฉด 0์ ๋ฆฌํดํ์ง๋ง ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.
์ ๋ต ์ฝ๋
import java.util.Stack;
class Solution
{
public int solution(String s)
{
Stack<Character> stack = new Stack<Character>();
for(int i=0; i<s.length(); i++){
if(!stack.isEmpty() && stack.peek() == s.charAt(i))
stack.pop();
else
stack.push(s.charAt(i));
}
return stack.isEmpty() ? 1 : 0;
}
}
ํ์ด
Stack์ ์ ์ธํ๊ณ , ์คํ์ ๋น์ด์์ง ์๊ฑฐ๋ ์คํ์์ ๊ฐ์ฅ top ๊ฐ์ด ํ์ฌ ๋น๊ตํ ๊ฐ๊ณผ ๊ฐ์๊ฒฝ์ฐ
pop()์ ํตํด ํ์ฌ peek๊ฐ์ ์ ๊ฑฐํ๊ณ , ๊ทธ๋ ์ง ์์๊ฒฝ์ฐ push()๋ฅผ ํตํด ํ์ฌ ๊ฐ์ ๋ฃ๋๋ค.
์ ์์ "baabaa" ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ ค๋ณด๋ฉด ์์ ๊ฐ๋ค.
๋จผ์ ์ฒซ๋ฒ์งธ๊ฐ 'b' ๋ ์คํ์ด ๋น์ด์์ผ๋ฏ๋ก pushํ๋ค.
๊ทธ ํ a๊ฐ์ ํ์ฌ ์คํ์ peek๊ฐ(b) ์ ๋ค๋ฅด๋ฏ๋ก ์ญ์ pushํ๋ค.
๊ทธ ํ a๊ฐ์ ํ์ฌ ์คํ์ peek๊ฐ(a) ์ ๊ฐ์ผ๋ฏ๋ก pop์ ํตํด a๋ฅผ ์ ๊ฑฐํ๋ค -> ์คํ์ ํ์ฌ๊ฐ์ b
๊ทธ ํ b๊ฐ์ ํ์ฌ ์คํ์ peek๊ฐ(b)์ ๊ฐ์ผ๋ฏ๋ก pop์ ํตํด b๋ฅผ ์ ๊ฑฐํ๋ค -> ์คํ์ ํ์ฌ ๋น์ด์๋ ์ํ.
๊ทธ ํ a๋ฅผ ๋ฃ๊ณ , peek๊ฐ์ด a์ด๋ฏ๋ก pop์ ํตํด a๋ฅผ ์ ๊ฑฐํ๋ค.
์ต์ข ์ ์ผ๋ก ์คํ์ ๋น์ด์๋ ์ํ๊ฐ ๋๋ค.
์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์คํ์ด ๋ฐ๋ก ๋ ์ฌ๋๋ค๋ฉด ์์ฝ๊ฒ ํด๊ฒฐํ ์ ์์์ง๋ง, ๋ ์ค๋ฅด์ง ์์ ๋ฐ๋ก ํด๊ฒฐ์ ๋ชปํ๋ค.
์๊ณ ๋ฆฌ์ฆ์ ํ๋ ์ ๊ทผ๋ฐฉ๋ฒ์ ์๊ฐํ๋ ๊ฒ๋ ์ข์ง๋ง, ๋ฌด์จ ์๊ณ ๋ฆฌ์ฆ์ธ์ง ์๊ฐํ๊ณ ํ์ด์ผ๊ฒ ๋ค .
์ ๋ฌธ์ ์ ๋์ผํ ๋ฌธ์
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ์ผ๊ทผ ์ง์ (0) | 2020.03.03 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ๋จ์์นด๋ฉ๋ผ(Greedy) (0) | 2020.03.02 |
[๋ฐฑ์ค] 11727๋ฒ: 2xn ํ์ผ๋ง 2 (0) | 2020.03.02 |
[Codeforces] 677A: Vanya and Fence (0) | 2020.03.01 |
[๋ฐฑ์ค] 4641๋ฒ: Doubles(์์ ํ์) (0) | 2020.02.29 |
๋๊ธ