같은 글자가 뭉치면 터지는 문제. stack을 활용하여 간단히 풀 수 있다.
import java.util.Stack;
class Solution {
public int solution(String s) {
Stack<Character> stack = new Stack();
for(char ch: s.toCharArray()) {
if (stack.isEmpty() || stack.peek() != ch)
stack.add(ch);
else
stack.pop();
}
return stack.isEmpty() ? 1 : 0;
}
}
Stack<Character> stack = new Stack();
문자를 비교할 stack 생성.
for(char ch: s.toCharArray()) {
if (stack.isEmpty() || stack.peek() != ch)
stack.add(ch);
else
stack.pop();
}
s에서 한 글자씩 가져올 건데, idx를 활용해 charAt해도 되겠지만 foreach로 간단하게 수행하게끔 charArray로 만들어주었다.
stack이 비어있거나, stack의 마지막값이 현재 얻어온 값이랑 다르다면 stack에 글자를 추가했다.
하지만 stack의 마지막값과 이번 글자가 같다면 제거하도록 하였다.
return stack.isEmpty() ? 1 : 0;
스택이 비었다면(모든 글자가 터졌다면) 1을, 아니라면 0을 반환.
def solution(s):
stack = []
for ch in s:
if stack and stack[-1] == ch:
stack.pop()
else:
stack.append(ch)
return 0 if stack else 1
stack = []
stack 선언.
for ch in s:
if stack and stack[-1] == ch:
stack.pop()
else:
stack.append(ch)
s에서 한 글자씩 가져온다.
stack이 비어있지 않고, 마지막 글자가 ch랑 같다면 pop으로 제거, 아니라면 stack에 값을 추가한다.
return 0 if stack else 1
stack이 비어있지 않다면 0을, 아니라면 1을 반환.