[프로그래머스(Programmers)][자바(java)] (Lv2) 괄호 회전하기 <월간 코드 챌린지 시즌2>

728x90

 

programmers.co.kr/learn/courses/30/lessons/76502

 

코딩테스트 연습 - 괄호 회전하기

 

programmers.co.kr

 

문제 풀이

 

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;
	}

}

 

큐를 이용하여 문자열의 괄호들을 하나씩 삭제하고 추가하며 올바른 괄호인지 검사( 스택 이용 )

 

 

반응형