[Programmers]-괄호 회전하기
문제
괄호를 순환한다는 것이다. 회전해도 올바른 문자열이면 올바른 수를 반환하면 되는 문제이다.
코드
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
for(int i=0;i<s.length();i++){
s += s.charAt(0)+"";
s = s.substring(1,s.length());
answer = right(s) ? answer+1 : answer;
}
return answer;
}
public boolean right(String s){
Stack<Character> stack = new Stack<Character>();
for(int i=0;i<s.length();i++){
char now = s.charAt(i);
if(now=='(' || now=='{' || now=='[') stack.push(now);
else{//닫는 괄호일 때
if(stack.isEmpty()) return false;//스택이 비어있을 때
else{//스택이 비어있지 않을 때
char value = stack.pop();
if(value=='{'&&now=='}'||
value=='['&&now==']'||
value=='('&&now==')') continue;
else return false;
}
}
}
return stack.isEmpty() ? true : false;//여는 괄호가 남아있을 경우
}
}
코드 설명
스택을 이용하여 풀었다. 여는 괄호는 무조건 스택에 넣어주고 닫는 괄호일 때 주석 조건에 자세히 달았다.
요약
- 42서울에 가야하나..
- 괄호에는 스택을 써주면 편하다.