Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

csct3434

[level 2] 괄호 회전하기 - 76502 본문

프로그래머스

[level 2] 괄호 회전하기 - 76502

csct3434 2024. 2. 29. 03:27

문제 링크

 

프로그래머스

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

programmers.co.kr

import java.util.HashMap;
import java.util.Stack;

class Solution {

    private final HashMap<Character, Integer> map = new HashMap<>();

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

        map.put('(', 1);
        map.put('{', 2);
        map.put('[', 3);
        map.put(')', -1);
        map.put('}', -2);
        map.put(']', -3);

        StringBuilder stringBuilder = new StringBuilder(s);
        for (int x = 0; x < s.length(); x++) {
            stringBuilder.append(stringBuilder.charAt(0));
            stringBuilder.deleteCharAt(0);
            if (check(stringBuilder.toString())) {
                answer++;
            }
            ;
        }
        return answer;
    }

    boolean check(String s) {
        Stack<Integer> stack = new Stack<>();

        for (char c : s.toCharArray()) {
            Integer value = map.get(c);

            if (value > 0) {
                stack.push(value);
                continue;
            }

            if (!stack.isEmpty() && stack.peek() + value == 0) {
                stack.pop();
            } else {
                return false;
            }
        }

        return stack.isEmpty();
    }
}