나의 풀이
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Stack;
import java.util.stream.Collectors;
class Solution {
public int solution(String s) {
int cnt=0;
List<String> list = Arrays.stream(s.split("")).collect(Collectors.toList());
for (int i = 0; i < list.size(); i++) {
Collections.rotate(list, -1);
if(bracket_judge(list)){
cnt+=1;
}
}
return cnt;
}
private boolean bracket_judge(List<String> list) {
Stack<String> stack = new Stack<>();
for (int i = 0; i < list.size(); i++) {
if (stack.isEmpty()) {
stack.push(list.get(i));
} else if (stack.get(stack.size() - 1).equals( "(")) {
if (list.get(i).equals( ")")){
stack.pop();
} else {
stack.push((list.get(i)));
}
} else if (stack.get(stack.size() - 1).equals("[")) {
if (list.get(i).equals("]")){
stack.pop();
} else {
stack.push((list.get(i)));
}
} else if (stack.get(stack.size() - 1).equals("{")) {
if (list.get(i).equals("}")) {
stack.pop();
} else {
stack.push((list.get(i)));
}
}
}
return stack.isEmpty() ? true : false;
}
}
▶ String 문자열을 리스트로 만들고, List에서 rotate() 함수를 사용하여 문자열 밀기를 하였다.
▶ 별도의 함수를 만들어서 "올바른 괄호"인지 판단하기 위해 bracket_judge() 메서드를 별도로 정의 하였다.
▶ 올바른 괄호 판단은 "여는 괄호"인 경우에는 일단 스택에 넣고,
▶ 스택에 들어 있는 "여는 괄호"와 바깥에 있는 "닫는 괄호"가 짝이 맞는지를 확인한 다음에
짝이 맞는 경우 pop하도록 하였다.
'프로그래머스(자바) > LV.2(자바)' 카테고리의 다른 글
기능개발→ 나누기★ + 미친 for문★ +cnt★ (0) | 2022.12.27 |
---|---|
위장→replaceAll() : 요소 전부 +1하기, 요소 전부 곱하기★ +map함수이용(count)★ (1) | 2022.12.27 |
1차 캐시→ 익명 클래스★★, this참조변수, super() 생성자 (0) | 2022.12.26 |
N개의 최소 공배수→ 연쇄 법칙 (겹치지X) + stack이용 (0) | 2022.12.24 |
끝말잇기→contains()★+words[i].charAt(words[i].length()-1)★ (0) | 2022.12.24 |