개발/알고리즘

Programmers - 괄호 회전하기

devNam 2021. 12. 29. 18:44
반응형
 

코딩테스트 연습 - 괄호 회전하기

 

programmers.co.kr

 

import java.util.*;
class Solution {
    public int solution(String s) {
        int answer = 0;
        // 문자열 회전 코드
        for(int i = 0; i < s.length() ; i++) {
            String movedStr = s.substring(i) + s.substring(0, i);
            if(checkStr(movedStr.toCharArray())) {
                answer += 1;
            }
        }
        return answer;
    }
    public boolean checkStr (char[] strArr) {
    	// 첫 번째 글자가 ], ), } 경우 무조건 false
        if(strArr[0] == ']' || strArr[0] == ')' || strArr[0] == '}') {
            return false;
        }

        Stack<Character> chStack = new Stack<>();
        for(char ch : strArr) {
        	// [, (, { 경우 chStack에 삽입
            if(ch == '[' || ch == '(' || ch == '{') {
                chStack.push(ch);
            } else {
            	// ], ), } 경우 chStack size 여부 확인
                if(!chStack.isEmpty()) {
                	// 괄호 조합
                    String tempStr = String.valueOf(chStack.peek()) + String.valueOf(ch);
                    if (tempStr.equals("[]") || tempStr.equals("()") || tempStr.equals("{}")) {
                        chStack.pop();
                    } else {
                    	// 괄호 조합이 어긋날 경우 남은 글자를 조합해도 완전한 괄호를 가질 수 없음
                        return false;
                    }
                } else {
                    return false;
                }
            }
        }
        
        if(!chStack.isEmpty()) {
            return false;
        }
        return true;
    }
}

 

프로그래머스 풀면서 9점 나온 경우는 처음이었다

기분 좋음

반응형