
나의 풀이
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
char[] c = s.toCharArray();
for (int i = 0; i < c.length; i++) {
if (stack.empty()) { // 1
stack.push((int)c[i]);
} else if (c[i] == stack.peek()) { // 2
stack.pop();
} else { // 3
stack.push((int)c[i]);
}
}
return answer = stack.empty() ? 1 : 0; // 4
}
}
과정
- s를 char형태의 배열로 만든 c를 순회하며 stack이 비었을땐 push
- stack이 비지 않고, stack의 마지막 요소가 c의 [i]번째 요소와 같으면 pop
- stack이 비지 않고, stack의 마지막 요소와 c의 [i]번째 요소와 다르면 push
- 끝났을 때, stack이 비었으면 1, 비지 않았으면 0을 반환
다른 사람 풀이
import java.util.*;
class Solution
{
public int solution(String s)
{
int answer = 0;
Stack<Character> stack = new Stack<>();
for(char c : s.toCharArray()){
if(stack.size() == 0){
stack.push(c);
}
else if(stack.peek() == c){
stack.pop();
}
else{
stack.push(c);
}
}
return stack.size() > 0 ? 0 : 1;
}
}