Computer Sciences/Problem Solve
[Programmers] 괄호 회전하기
jeidiiy
2023. 8. 9. 12:05
https://school.programmers.co.kr/learn/courses/30/lessons/76502
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
올바른 괄호 문제의 응용 버전이다. 이 문제 또한 스택을 활용할 줄 알고 앞 문제를 풀어봤다면 금방 해결할 수 있다. 문자열을 회전하라고 하는데 간단하게 하면 맨 앞 문자를 떼서 맨 뒤로 붙이면 된다.
코드
import java.util.Stack;
class Solution {
public int solution(String s) {
int answer = 0;
for (int i = 0; i < s.length(); i++) {
Stack<Character> stack = new Stack<>();
char first = s.charAt(0);
s = s.substring(1) + first;
for (int j = 0; j < s.length(); j++) {
char ch = s.charAt(j);
switch (ch) {
case ']':
if (!stack.isEmpty() && stack.peek() == '[') {
stack.pop();
} else {
stack.push(ch);
}
break;
case ')':
if (!stack.isEmpty() && stack.peek() == '(') {
stack.pop();
} else {
stack.push(ch);
}
break;
case '}':
if (!stack.isEmpty() && stack.peek() == '{') {
stack.pop();
} else {
stack.push(ch);
}
break;
default:
stack.push(ch);
break;
}
}
if (stack.isEmpty()) {
answer++;
}
}
return answer;
}
}