(), [] , {} 는 올바른 괄호이다.
"[](){}" 이렇게 들어오고나서 한 칸 씩 회전해서 올바른 기호가 몇 번 가능하냐는 문제
1회전 ](){}[ -> 올바른 괄호 x
2회전 (){}[] -> 올바른 괄호 o
3회전 ){}[]( -> 올바른 괄호 x
이런식으로 돌아서 올바른 괄호의 개수를 리턴 하라.
"}]()[{" 예시
공략
1. 문자열을 회전 할 수 있느냐
2. 올바른 괄호를 체크 할 수 있느냐
+ 홀수면 무조건 올바른 괄호가 나올수 없다.
1. 문자열 회전 ( 1번째 위치부터 마지막까지 자른다. 그리고 뒤에 0번째 문자를 추가)
public static int solution(String s) {
if(s.length()%2==1) return 0;
int cnt = 0;
char[] arr = s.toCharArray();
cnt = 0;
// 1. 문자열 회전
for(int i=0; i<s.length(); i++){
char first = s.charAt(0);
cnt += stack(s);
s = s.substring(1)+first;
}
return cnt;
}
2. 올바른 괄호 체크 ( 해시맵의 올바른 괄호의 짝을 넣어줘서 체크)
public static int stack(String s){
Stack<Character> stack = new Stack<>();
HashMap<Character, Character> hashMap = new HashMap<>();
hashMap.put(']', '[');
hashMap.put('}', '{');
hashMap.put(')', '(');
//2. 올바른 괄호 체크
for(char a : s.toCharArray()){
if(a=='[' || a=='{' || a=='('){
stack.push(a);
}else{
if(stack.isEmpty()) return 0;
if(stack.peek()!=hashMap.get(a)) return 0;
stack.pop();
}
}
return 1;
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
Level2 - n^2 배열 자르기 (0) | 2023.05.26 |
---|---|
Level2 - 연속 부분 수열 합의 개 (0) | 2023.05.26 |
Level2 - 귤 고르기 (0) | 2023.05.25 |
Level2 - 점프와 순간 이동 (2) | 2023.05.23 |
Level2 - 예상 대진표 (0) | 2023.05.22 |
댓글