문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/76502
제한 사항
입출력 예
풀이
import java.util.Stack;
class Solution {
public int solution(String s) {
int answer = 0;
Stack<Character> result = new Stack<>();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
result.clear();
sb.setLength(0);
sb.append(s.substring(i, s.length())).append(s.substring(0, i));
String check = sb.toString();
for (int j = 0; j < check.length(); j++) {
char c = check.charAt(j);
if (c == '[' || c == '{' || c == '(') {
result.push(c);
}
else {
if (result.isEmpty()) break;
else {
if (c == ']') {
if (result.peek() != '[') break;
else result.pop();
}
else if (c == '}') {
if (result.peek() != '{') break;
else result.pop();
}
else {
if (result.peek() != '(') break;
else result.pop();
}
}
}
if (j == check.length() - 1 && result.size() == 0) answer++;
}
}
return answer;
}
}
후기
괄호가 올바른지 알아보는 방법인 스택을 이용한 그 방법을 사용하면 된다. 대신 스택에서 뺄 때 같은 종류의 괄호가 완성되었는지 판단하도록 수정하면 된다.
'코딩테스트 (프로그래머스) > Java' 카테고리의 다른 글
[프로그래머스][JAVA][Lv. 0] 배열 조각하기 (0) | 2023.09.11 |
---|---|
[프로그래머스][JAVA][Lv. 2] 기능 개발 (0) | 2023.09.08 |
[프로그래머스][JAVA][Lv. 2] 튜플 (0) | 2023.09.06 |
[프로그래머스][JAVA][Lv. 0] 다음에 올 숫자 (0) | 2023.09.05 |
[프로그래머스][JAVA][Lv. 2] 캐시 (0) | 2023.09.05 |