728x90
programmers.co.kr/learn/courses/30/lessons/76502
문제 풀이
import java.util.*;
public class Solution {
public static boolean isCorrect( Deque<Character> q ) {
Stack<Character> s = new Stack<>();
for( char c : q ) {
if( c == '(' || c == '[' || c == '{' )
s.add( c );
if( c == ')' ) {
if( !s.isEmpty() && s.peek() == '(' ) s.pop();
else return false;
}
if( c == ']' ) {
if( !s.isEmpty() && s.peek() == '[' ) s.pop();
else return false;
}
if( c == '}' ) {
if( !s.isEmpty() && s.peek() == '{' ) s.pop();
else return false;
}
}
return s.isEmpty() ? true : false;
}
public static int solution(String s) {
int ans = 0, n = s.length(), x = 0;
Deque<Character> q = new ArrayDeque<>();
for( char c : s.toCharArray() )
q.add( c );
while( x < n ) {
if( isCorrect( q ) )
ans++;
q.addLast( q.pollFirst() );
x++;
}
return ans;
}
}
큐를 이용하여 문자열의 괄호들을 하나씩 삭제하고 추가하며 올바른 괄호인지 검사( 스택 이용 )
반응형