https://school.programmers.co.kr/learn/courses/30/lessons/76502
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
일반적인 올바른 괄호 체크 문제와 비슷하다.
단지 시작 지점을 옮겨가며 올바른 괄호 여부를 체크하는 과정이 하나 추가 되어 for 문이 하나 더 중첩되었을 뿐이다.
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
if (s.length() == 1) return 0;
char[] arr = s.toCharArray();
// 시작 위치
for (int i = 0; i < arr.length; i++) {
Stack<Character> q = new Stack();
// 괄호 판별
for (int j =0; j < arr.length; j++) {
char c = arr[(i+j) % arr.length];
if (c == '(' || c == '[' || c == '{') {
q.add(c);
} else {
if (q.isEmpty()) {
q.push(c);
break;
}
char p = q.peek();
if (c == ')') {
if (p != '(') break;
} else if (c == '}') {
if (p != '{') break;
} else if (c == ']') {
if (p != '[') break;
}
q.pop();
}
}
if (q.isEmpty()) answer++;
}
return answer;
}
}
'코딩테스트 > programmers' 카테고리의 다른 글
n^2 배열 자르기 (0) | 2023.10.04 |
---|---|
할인 행사 (0) | 2023.10.04 |
연속 부분 수열 합의 개수 (0) | 2023.09.25 |
귤 고르기 (0) | 2023.09.25 |
멀리 뛰기 (0) | 2023.09.25 |