사용 알고리즘: 스택
사용 언어: java
import java.util.*;
class Solution {
int answer = 0;
public int solution(String s) {
List<Character> ss = init(s);
for(int i=0; i<ss.size(); i++) {
ss.add(ss.remove(0));
if(makeSentence(ss))
answer++;
}
return answer;
}
public boolean makeSentence(List<Character> ss) {
Stack<Character> stk = new Stack<>();
for(int i=0; i<ss.size(); i++) {
char cur = ss.get(i);
if(cur==']') {
if(!stk.isEmpty() && stk.peek()=='[') {
stk.pop();
continue;
}
return false;
}
if(cur=='}') {
if(!stk.isEmpty() && stk.peek()=='{') {
stk.pop();
continue;
}
return false;
}
if(cur==')') {
if(!stk.isEmpty() && stk.peek()=='(') {
stk.pop();
continue;
}
return false;
}
stk.push(cur);
}
if(stk.isEmpty()) return true;
return false;
}
public List<Character> init(String s) {
List<Character> ss = new ArrayList<>();
for(int i=0; i<s.length(); i++) {
ss.add(s.charAt(i));
}
return ss;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
뒤에 있는 큰 수 찾기 (0) | 2025.01.28 |
---|---|
이중우선순위큐 (0) | 2024.12.18 |
신규 아이디 추천 (0) | 2024.12.13 |
이진 변환 반복하기 (0) | 2024.12.13 |
정수 삼각형 (0) | 2024.12.12 |