programmers.co.kr/learn/courses/30/lessons/76502
스택을 통해서 풀이를 진행하였습니다.
간단하게 설명하자면
문자가 (, {, [ 이면 stack에 추가 하고
아니면 앞서 stack 에 넣은 값이 반대방향의 괄호가 아니라면 return false;
맞으면 넣은 값을 pop함
마지막에 stack이 비어야 return true
이유는 (, {, [ 가 더 많이 존재하면 stack에 값이 남아 있게 되기 때문에
쌍이 딱 맞다면 스택의 길이는 0이 된다.
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
StringBuilder temp = new StringBuilder(s);
for(int i = 0; i < s.length(); i++) {
if(isCorrectStr(temp.toString())) {
answer += 1;
}
temp.append(temp.charAt(0)).deleteCharAt(0);
}
return answer;
}
static boolean isCorrectStr(String str) {
Stack<Character> stack = new Stack<>();
for (int i = 0; i < str.length(); i++) {
char now = str.charAt(i);
if(now == '(' || now == '{' || now == '[') {
stack.add(now);
}else if(!stack.isEmpty()) {
if(now == ')' && stack.peek() == '(') {
stack.pop();
}
else if(now == '}' && stack.peek() == '{') {
stack.pop();
}
else if(now == ']' && stack.peek() == '[') {
stack.pop();
}
}else {
return false;
}
}
if(stack.isEmpty()) {
return true;
}
return false;
}
}
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 스티커 모으기(2) 문제 (자바) (0) | 2021.04.23 |
---|---|
프로그래머스 - 모두 0으로 만들기 (자바) (0) | 2021.04.23 |
프로그래머스 - 짝지어 제거하기 문제 (자바) (0) | 2021.04.07 |
프로그래머스 - 방문 길이 문제 (자바) (0) | 2021.04.06 |
프로그래머스 - 캐쉬 문제 (자바) (0) | 2021.04.03 |