728x90
반응형
문제
풀이
핵심은 stack을 이용하는 것이다. 스택을 만들어서 스택이 비어있지 않으면 하나씩 꺼내어 String s의 한 글자와 비교하여 같으면 스택에서 빼내고, 다르면 스택에 다시 집어넣는다. 이 작업을 String s를 모두 돌며 반복했을 때 스택에 남은 글자가 없으면 모두 짝지어 제거한 것이므로 1을 리턴, 아니면 제거하지 못한 것이므로 0을 리턴한다.
import java.util.Stack;
class Solution
{
public int solution(String s)
{
int answer = -1;
Stack<Character> stack = new Stack<>();
for (int i=0; i<s.length(); i++) {
char c = s.charAt(i); // String s의 글자 하나씩 잘라(c)
if (!stack.isEmpty() && stack.peek() == c) {
//스택이 비어있지 않은 경우 하나를 꺼내어 비교해서 같으면
stack.pop(); //스택에서 제거
} else {
//다르면 스택에 넣는다.
stack.push(c);
}
}
//끝까지 반복한 뒤 스택이 비어있다 == 모두 짝지어 제거했다.
answer = (stack.size() == 0) ? 1 : 0;
return answer;
}
}
728x90
반응형
'코딩테스트 연습' 카테고리의 다른 글
두 개 뽑아서 더하기 (프로그래머스 코딩테스트 연습) (0) | 2023.04.24 |
---|---|
Java 문자열을 정수로 바꾸기 (프로그래머스 코딩테스트 연습) (0) | 2023.03.13 |
다음 큰 숫자(Java) - 프로그래머스 코딩테스트 연습 (0) | 2023.03.12 |