📝문제 설명
📢입출력 예시
✏️문제 풀이
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
for (int a = 0; a < s.length(); a++) {
String rotated = s.substring(a) + s.substring(0, a);
if (isValid(rotated)) {
answer++;
}
}
return answer;
}
private boolean isValid(String s) {
Deque<Character> stack = new ArrayDeque<>();
for (char c : s.toCharArray()) {
if (c == '(' || c == '{' || c == '[') {
stack.push(c);
} else {
if (stack.isEmpty()){
return false;
}
char top = stack.pop();
if ((top == '(' && c != ')') ||
(top == '{' && c != '}') ||
(top == '[' && c != ']')) {
return false;
}
}
}
return stack.isEmpty();
}
}
괄호 짝 맞추는 문제에 문자열 회전 조건만 추가된 문제이다.
💡새로 알게된 점
문자열 자르기 함수를 사용할 줄 몰라 아는 대로 Deque를 써서 회전시키려고 했지만 어디선가 계속 문제가 발생하여
그냥 substring을 배우고 문제를 풀었습니다.
'📖Algorithm > Stack' 카테고리의 다른 글
자바 [Programmers] 2단계 - 짝지어 제거하기 (0) | 2024.12.03 |
---|---|
C++ [Algorithm] - 백준 10773 제로 (0) | 2024.07.29 |
C++ [Algorithm] - 백준 28278 스택2 (0) | 2024.07.29 |