https://school.programmers.co.kr/learn/courses/30/lessons/12909/ (프로그래머스)
스택(STACK) , 큐(QUEUE)
스택/큐를 활용해 문제 풀이 (성공)
import java.util.Stack;
class Solution {
boolean solution(String s) {
//사전에 불가능한 케이스 처리
if(s.charAt(0) == ')' || s.charAt(s.length()-1) == '(')
return false;
Stack<Character> stack = new Stack<>();
for(char chr : s.toCharArray()) {
if(stack.isEmpty()) {
if(chr == ')') return false;
stack.push(chr);
} else {
if(stack.peek() == '(' && chr == ')') {
stack.pop();
} else {
stack.push(chr);
}
}
}
return stack.isEmpty();
}
}
시작이 ) 이거나 마지막이 ( 이면 잘못된 괄호이므로 false 처리한다.
만약 stack이 비어있고 ) 을 넣으려고 하면 false를 리턴한다.
그렇지 않으면 비어있는 상태에서 ( 을 입력하는 것이므로 스택에 push한다.
stack이 비어있지 않고, 마지막으로 들어있는 값이 ( 이면서[peek] , 현재 값이 ) 이라면 stack에서 pop을 통해 마지막의 데이터를 빼낸다.
문제를 풀때 적합한 자료구조를 사용하면 편리하게 문제를 해결할 수 있었다.
#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL