Algorithm & Data Structures/Programers
Lv 2. 괄호 회전하기
Geisha
2024. 6. 26. 21:51
Queue 를 이용하여 회전하는 로직을 구현하였고,
회전을 1회 할때마다 isValid 함수를 통해 유효한 괄호인지 체크하였다.
isEmpty() 를 리턴하여 stack이 비었다면 true를 리턴하도록 구현하였다.
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
Queue<Character> q = new ArrayDeque<>();
for(int i = 0 ; i < s.length(); i++)
q.offer(s.charAt(i));
for(int i = 0 ; i < s.length(); i++){
if(isValid(q))
answer++;
q.offer(q.poll());
}
return answer;
}
public boolean isValid(Queue<Character> q){
Stack<Character> st = new Stack<>();
for(Character c : q){
if(c == '(' || c == '{' || c == '[')
st.add(c);
else{
if(st.isEmpty())
return false;
Character top = st.pop();
if((c == ')' && top != '(') ||
(c == '}' && top != '{') ||
(c == ']' && top != '['))
return false;
}
}
return st.isEmpty();
}
}