[프로그래머스, 76502] 괄호 회전하기 (java)
Problem Solving/Programmers

[프로그래머스, 76502] 괄호 회전하기 (java)

728x90

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


메모리: 87 MB, 시간: 569.57 ms

사용 알고리즘: 스택

import java.util.*;

class Solution {
    public int solution(String s) {
        
        int answer = 0;
        
        List<Character> sList = new LinkedList<>();
        for(int i = 0; i < s.length(); i++) {
            sList.add(s.charAt(i));
        }
        
        Stack<Character> stack = new Stack<>();
        boolean flag;
        for(int i = 0; i < s.length(); i++) {
            flag = true;
            
            for(int j = 0; j < sList.size(); j++) {
                if(sList.get(j) == '(' || sList.get(j) == '{' || sList.get(j) == '[')
                    stack.push(sList.get(j));
                else if((sList.get(j) == ')' && !stack.isEmpty() && stack.peek() == '(') ||
                        (sList.get(j) == '}' && !stack.isEmpty() &&  stack.peek() == '{') ||
                        (sList.get(j) == ']' && !stack.isEmpty() &&  stack.peek() == '['))
                            stack.pop();
                else {
                    flag = false;
                    break;
                }
            }
            
            if(stack.size() != 0) flag = false;
            
            if(flag) answer++;
            
            sList.add(sList.get(0));
            sList.remove(0);
        }
        
        return answer;
    }
}
728x90