본문 바로가기

코딩테스트/programmers

괄호 회전하기

 

https://school.programmers.co.kr/learn/courses/30/lessons/76502

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

일반적인 올바른 괄호 체크 문제와 비슷하다.

 

단지 시작 지점을 옮겨가며 올바른 괄호 여부를 체크하는 과정이 하나 추가 되어 for 문이 하나 더 중첩되었을 뿐이다.

 

 

import java.util.*;

class Solution {
    public int solution(String s) {
        
        int answer = 0;
        
        if (s.length() == 1) return 0;
        
        char[] arr = s.toCharArray();
        
        // 시작 위치
        for (int i = 0; i < arr.length; i++) {  
        
            Stack<Character> q = new Stack();
            
            // 괄호 판별
            for (int j =0; j < arr.length; j++) {
            
                char c = arr[(i+j) % arr.length];
                
                if (c == '(' || c == '[' || c == '{') {
                    q.add(c);
                } else {
                    if (q.isEmpty()) {
                        q.push(c);
                        break;
                    }
                    char p = q.peek();
                    if (c == ')') {
                        if (p != '(') break;
                    } else if (c == '}') {
                        if (p != '{') break;
                    } else if (c == ']') {
                        if (p != '[') break;
                    }
                    q.pop();
                }
                
            }
            
            if (q.isEmpty()) answer++;
            
        }
        
        return answer;
    }
}

 

 

'코딩테스트 > programmers' 카테고리의 다른 글

n^2 배열 자르기  (0) 2023.10.04
할인 행사  (0) 2023.10.04
연속 부분 수열 합의 개수  (0) 2023.09.25
귤 고르기  (0) 2023.09.25
멀리 뛰기  (0) 2023.09.25