[Programmers] 괄호 회전하기

2023. 8. 9. 12:05Computer Sciences/Problem Solve

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

 

프로그래머스

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

programmers.co.kr

문제 설명

올바른 괄호 문제의 응용 버전이다. 이 문제 또한 스택을 활용할 줄 알고 앞 문제를 풀어봤다면 금방 해결할 수 있다. 문자열을 회전하라고 하는데 간단하게 하면 맨 앞 문자를 떼서 맨 뒤로 붙이면 된다.

코드

import java.util.Stack;

class Solution {
    public int solution(String s) {
        int answer = 0;

        for (int i = 0; i < s.length(); i++) {
            Stack<Character> stack = new Stack<>();
            char first = s.charAt(0);
            s = s.substring(1) + first;

            for (int j = 0; j < s.length(); j++) {
                char ch = s.charAt(j);

                switch (ch) {
                    case ']':
                        if (!stack.isEmpty() && stack.peek() == '[') {
                            stack.pop();
                        } else {
                            stack.push(ch);
                        }
                        break;
                    case ')':
                        if (!stack.isEmpty() && stack.peek() == '(') {
                            stack.pop();
                        } else {
                            stack.push(ch);
                        }
                        break;
                    case '}':
                        if (!stack.isEmpty() && stack.peek() == '{') {
                            stack.pop();
                        } else {
                            stack.push(ch);
                        }
                        break;
                    default:
                        stack.push(ch);
                        break;
                }
            }     
                    
            if (stack.isEmpty()) {
                answer++;
            }
        }
        
        return answer;
    }
}

'Computer Sciences > Problem Solve' 카테고리의 다른 글

[Programmers] H-Index  (0) 2023.08.10
[Programmers] n^2 배열 자르기  (0) 2023.08.10
[Programmers] 귤 고르기  (0) 2023.08.09
[Programmers] 멀리 뛰기  (0) 2023.08.08
[Programmers] N개의 최소공배수  (0) 2023.08.08