🍀 문제
다음 규칙을 지키는 문자열을 올바른 괄호 문자열이라고 정의합니다.
- (), [], {} 는 모두 올바른 괄호 문자열입니다.
- 만약 A가 올바른 괄호 문자열이라면, (A), [A], {A} 도 올바른 괄호 문자열입니다. 예를 들어, [] 가 올바른 괄호 문자열이므로, ([]) 도 올바른 괄호 문자열입니다.
- 만약 A, B가 올바른 괄호 문자열이라면, AB 도 올바른 괄호 문자열입니다. 예를 들어, {} 와 ([]) 가 올바른 괄호 문자열이므로, {}([]) 도 올바른 괄호 문자열입니다.
대괄호, 중괄호, 그리고 소괄호로 이루어진 문자열 s가 매개변수로 주어집니다. 이 s를 왼쪽으로 x (0 ≤ x < (s의 길이)) 칸만큼 회전시켰을 때 s가 올바른 괄호 문자열이 되게 하는 x의 개수를 return 하도록 solution 함수를 완성해주세요.
입출력 예
s | result |
"[](){}" | 3 |
"}]()[{" | 2 |
"[)(]" | 0 |
"}}}" | 0 |
https://programmers.co.kr/learn/courses/30/lessons/76502
코딩테스트 연습 - 괄호 회전하기
programmers.co.kr
😊 나의 코드
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
Stack<Character> stack = new Stack<>();
for (int j = 0; j < s.length(); j++) {
boolean check = true;
stack.clear();
s = s.substring(1) + s.charAt(0);
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (c == '[' || c == '(' || c == '{') {
stack.push(s.charAt(i));
} else if (stack.isEmpty()) {
check = false;
break;
} else {
char sc = stack.pop();
if ((c == ']' && sc != '[') || (c == ')' && sc != '(') || (c == '}' && sc != '{')) {
check = false;
break;
}
}
}
if (check && stack.isEmpty()) answer++;
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 LV2. 중성화 여부 파악하기 (MySQL) (0) | 2022.03.09 |
---|---|
프로그래머스 LV2. 124 나라의 숫자 (자바) (0) | 2022.03.09 |
프로그래머스 LV2. 큰 수 만들기 (자바) (0) | 2022.03.07 |
프로그래머스 LV2. 메뉴 리뉴얼 (자바) (0) | 2022.03.07 |
프로그래머스 LV2. 주차 요금 계산 (자바) (0) | 2022.03.06 |
댓글