[Programmers/JAVA] 괄호 회전하기

2023. 2. 9. 23:57자바/프로그래머스

 

내 코드

class Solution {
    public int solution(String s) {
        int answer = 0;
        
        String s1="\\[\\]"; // ""속에 특정 기호들을 넣을 때는 \\ 이걸 써줘야함.
        String s2="\\(\\)";
        String s3="\\{\\}";



        for(int i=0; i<s.length(); i++) {
            s=s.substring(1,s.length())+s.substring(0,1); //s를 왼쪽으로 한칸씩 밀어줌.
            String s_new=s; //s를 s_new에 저장. 원래 s값이 for문안에서 매번 필요하기 때문이다. s_new는 값이 변형될거임.

            while(true) {
                String s_backup=s_new; // 연산 후의 s_new값과 연산 전의 값을 비교하기 위해서.
                s_new=s_new.replaceAll(s1, "");
                s_new=s_new.replaceAll(s2, "");
                s_new=s_new.replaceAll(s3, "");
                if(s_new.equals("")) { // s_new가 다 비워졌다면 빠져나가기.
                    answer++;
                    break;
                }
                if(s_backup==s_new) { // 연산 후의 s_new값이 연산 전과 같다는 건 제대로된 기호가 없었다는 뜻! 바로 break.
                    break;
                }
            }
        }
        
        return answer;
    }
}

 

느낀점

나는 정말이지 이번에야 stack을 써볼 기회라고 생각했다...

하...근데 아무리 생각해도 모르겠더라..

짝끼리 같은 숫자로 치환해서 stack으로 push, pop을 해볼까?? 했는데...

같은 값으로 치환해버리면 "(([[}}" <<이 형태도 통과가 되어버려서...

포기하고 위처럼 풀었다. stack 쓰고싶다... ㅜㅜ

'자바 > 프로그래머스' 카테고리의 다른 글

[Programmers/JAVA] 튜플  (0) 2023.02.13
[Programmers/JAVA] 행렬의 곱셈  (0) 2023.02.10
[Programmers/JAVA] H-Index  (0) 2022.12.30
[Programmers/JAVA] 멀리 뛰기  (0) 2022.12.30
[Programmers/JAVA] 점프와 순간 이동  (0) 2022.12.28