๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/12973?language=java
ํ์ด
import java.util.*;
class Solution
{
public int solution(String s)
{
int answer = -1;
char[] cArr = s.toCharArray();
Stack<Character> stack = new Stack<>();
for(int i=0; i<cArr.length; i++){
char c = cArr[i];
if(stack.isEmpty()){
stack.push(c);
}else{
if(stack.peek() == c){
stack.pop();
}else{
stack.push(c);
}
}
}
return stack.isEmpty() ? 1 : 0;
}
}
Stack์ ๋ํ ๋ฌธ์ ์ด๋ค. Stack ์๋ฃ๊ตฌ์กฐ๋ ๋งค์ฐ ์ค์ํ๊ณ ์ฝ๋ฉํ ์คํธ์์๋ ๋ง์ด ๋์ค๊ธฐ ๋๋ฌธ์ ์ ์์๋ฌ์ผํ๋ค.
์๋ฐ๋ก ์ฝํ ๋ฅผ ์ค๋นํ๋ฉด์ ์ฒ์์ ์ ์ผ ํท๊ฐ๋ฆฌ๋ ๊ฒ์ด toXXX์ธ ๊ฒ ๊ฐ๋ค. ํ์ด์ฌ์์๋ ํ๋ณํ์ด ์ฌ์ค ํฐ ์ด๋ ค์์ด ์์์ผ๋ ์๋ฐ์์๋ ์๋ฃํ์ด ๋งค์ฐ ์ค์ํ๋ค. ์ด๋ฐ ๋ถ๋ถ๋ค์ด ์ฒ์์๋ ์ด๋ ต์ง๋ง ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ์๋ฃํ์ ์๊ฒฉํ๊ฒ ์ค์ํ๋ ๊ฒ์ด ๋ ์ข์ ๊ฒ ๊ฐ๋ค.
๋ฌธ์ ํ์ด๋ฅผ ํ์๋ฉด
1. ๋งค๊ฐ๋ณ์๋ก ๋ค์ด์จ S๋ฅผ charํ ๋ฐฐ์ด๋ก ๋ณํ
2. ์คํ์ ์ด์ฉํ๊ธฐ ์ํด ์คํ ์ ์ธ
3. S๋ฅผ ์์ ํ์ ํ๋๋ก for๋ฃจํ
4. char ํ ๋ณ์์ charํ ๋ฐฐ์ด์ ๊ฐ๋ค์ ํ๋์ฉ ๋ฃ์ด์ค๋ค.
5. stack ์ด ๋น์ด์๋ค๋ฉด
5-1. ์ฒ์ ๊ฐ์ด ๋ค์ด์ค๊ฑฐ๋ ํ์ฌ์ ๋ฌธ์๋ ๋ฐ๋ณต๋ ์ผ์ด ์์ผ๋ฏ๋ก stack์ push ํด์ค๋ค.
6. stack์ด ๋น์ด์์ง ์๋ค๋ฉด
6-1. stack์ top์ ํ์ธ(๋จ์ ํ์ธ์ด๋ฏ๋ก ์ฝ์ ์ด๋ ์ญ์ ๊ฐ ์๋)ํ๊ณ ํ์ฌ์ ๋ฌธ์์ top์ด ๊ฐ๋ค๋ฉด stack์์ popํด์ค๋ค. ์ด๋ ๊ฒ ๋๋ฉด top์ ๋ฌธ์์ด์ ์์ฐ๊ณผ ๋์์ ๋ฐ๋ณต๋๋ ๋ฌธ์์ด์ ์ ๊ฑฐํ ์ ์๋ค.
6-2. top๊ณผ ๋ค๋ฅด๋ค๋ฉด stack์ ๋ฌธ์์ด์ ๋ฃ์ด์ค๋ค.
๊ทธ๋ ๊ฒ ๋์ด ์ต์ข ์ ์ผ๋ก ๋จ์์๋ ๊ฐ๋ค์ ๋ฐ๋ณต๋์ง ์๋ ๊ฐ์ด๊ณ stack์ด ๋น์ด์๋ค๋ฉด 1์ ๋ฐํ, ๊ทธ๋ ์ง ์๋ค๋ฉด 0์ ๋ฐํํด์ฃผ๋๋ก ํ๋ค.
'๐๏ธ Algorithm > โฌ ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โฌ [Programmers] [Java] [Level2] ์ ํ์ ์๊ฐ์ด๋ (0) | 2024.01.16 |
---|---|
โฌ [Programmers] [Java] [Level2] ์์ด ๋๋ง์๊ธฐ (0) | 2024.01.11 |
โฌ [Programmers] [Java] [Level2] ์ด์ง ๋ณํ ๋ฐ๋ณตํ๊ธฐ (1) | 2024.01.04 |
โฌ [Programmers] [Java] [Level2] ์ต์๊ฐ ๋ง๋ค๊ธฐ (2) | 2024.01.03 |
โฌ [Programmers] [Java] [Level2] JadenCase ๋ฌธ์์ด ๋ง๋ค๊ธฐ (1) | 2023.12.23 |