[Programmers / Level 2] 76502. 괄호 회전하기(Java)

이하얀·2024년 12월 1일
0

🕊️ 프로그래머스

목록 보기
76/82

💡 Info




입출력 조건




입출력 예시




문제 이해


  • 괄호의 짝이 완전히 맞는 경우에만 카운트를 증가


알고리즘


풀이 시간 : 22분

  • 문자열 시계방향 회전 -> 괄호의 짝이 올바른지 확인
    • 회전한 문자열에서 스택으로 괄호의 짝 실제 확인
    • 카운트 리준 : 짝이 하나라도 맞지 않으면 안됨!
import java.util.*;

public class Solution {
    static public int solution(String s) {
        int answer = 0;
        
        for (int i = 0; i < s.length(); i++) {
            Stack<Character> stack = new Stack<>();
            String rotatedStr = s.substring(i) + s.substring(0, i);
            
            for (char c : rotatedStr.toCharArray()) {
                if (c == '(' || c == '{' || c == '[') {
                    stack.push(c);
                } else if (!stack.isEmpty() && isValidPair(stack.peek(), c)) {
                    stack.pop();
                } else {
                    stack.push(c);
                }
            }
            
            if (stack.isEmpty()) {
                answer++;
            }
        }
        
        return answer;
    }

    static boolean isValidPair(char open, char close) {
        return (open == '(' && close == ')') || 
               (open == '{' && close == '}') || 
               (open == '[' && close == ']');
    }
}


결과

profile
언젠가 내 코드로 세상에 기여할 수 있도록, BE&Data Science 개발 기록 노트☘️

0개의 댓글