728x90
문제
풀이
- 스택 사용
- 한 칸씩 왼쪽으로 이동시키기
- 탐색 시작 위치를 한 칸씩 오른쪽으로 이동
- 해당 위치 인덱스를 문자열 전체 길이로 나머지 연산 수행해서 범위를 넘어가는 위치 인덱스 처리
- 괄호 짝이 맞다면 스택에서 pop()
- 괄호 짝이 맞지 않다면 스택에 push()
- 전체 문자를 탐색 후 스택이 비어있다면 answer 증가
코드
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
char[] arr = s.toCharArray();
int len = arr.length;
for (int k = 0; k < len; k++) {
Stack<Character> st = new Stack<>();
for (int i = k; i < k + len; i++) {
Character c = arr[i % len];
if (!st.isEmpty()) {
if (st.peek() == '[' && c == ']')
st.pop();
else if (st.peek() == '(' && c == ')')
st.pop();
else if (st.peek() == '{' && c == '}')
st.pop();
else
st.push(c);
} else {
st.push(c);
}
}
if (st.isEmpty())
answer++;
}
return answer;
}
}
'프로그래머스' 카테고리의 다른 글
프로그래머스 lv2 - 스킬트리 (0) | 2024.06.23 |
---|---|
프로그래머스 lv2 - 다리를 지나는 트럭 (자바) (0) | 2024.06.23 |
프로그래머스 lv2 - 두 큐 합 같게 만들기 (자바) [2022 KAKAO TECH INTERNSHIP] (0) | 2024.06.23 |
프로그래머스 lv2 - 구명보트 (자바) (0) | 2024.06.22 |
프로그래머스 lv2 - 요격 시스템 (자바) (0) | 2024.06.22 |