다희의 코딩 성장일기

[프로그래머스] level2. 괄호 회전하기 (자바 JAVA) 본문

Algorithm/프로그래머스

[프로그래머스] level2. 괄호 회전하기 (자바 JAVA)

ilmiodiario 2021. 8. 26. 15:33

[ 문제 ]  [프로그래머스] level2. 괄호 회전하기 (자바 JAVA)

 

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/76502

 

코딩테스트 연습 - 괄호 회전하기

 

programmers.co.kr


# 접근 방법 및 풀이 

 

  • 문제대로 구현하면 된다. 먼저, 올바른 괄호열인지 체크하는 함수를 따로 빼주었다.
  • 문자열 배열 s를 왼쪽으로 한칸 씩 옮겨서 올바른 괄호열인지 체크하면 되는데, 이때 substring()을 이용했다.
  • s의 맨 앞글자를 분리시켜서 s의 뒤에 분리한 앞글자를 더하면 왼쪽으로 한칸씩 이동하는 형태가 된다.
  • 자세한건 코드참조

# 주의할 점 

 

  • 딱히 없음

 

JAVA 코드
import java.util.*;
class Solution {
    public int solution(String s) {
        int answer = 0;
        for(int i = 0; i < s.length(); i++){
            String a = s.substring(0,1);
            s = s.substring(1, s.length());
            s += a;
            if(check(s))
                answer++;
        }
        return answer;
    }
    public static boolean check(String s){
        Stack<Character> stack = new Stack<>();
        for(int i = 0; i < s.length(); i++){
            char c = s.charAt(i);
            if(c == '{' || c == '['|| c == '(' ){
                stack.add(c);
            }else{
                if(stack.isEmpty())
                    return false;
                else{
                    char pop = stack.pop();
                    if(c == ')' && pop =='(')
                        continue;
                    if(c == '}' && pop =='{')
                        continue;
                    if(c == ']' && pop =='[')
                        continue;
                    return false;
                }
            }
        }
        if(!stack.isEmpty())
            return false;
        return true;
    }
}

 

 

 

REVIEW

Comments