[프로그래머스] Lv2 괄호 회전하기

changi123·2023년 8월 27일
0
post-thumbnail

문제설명

코드

import java.util.*;
class Solution {
    public int solution(String s) {
    	   int answer = 0;
	       char [] arr =  {'[','{','(',')','}',']'};
	       int [] iarr = new int [6];
		   List list0 = new ArrayList();
		   
		   for(int i= 0 ; i < s.length();i++) {
			   for(int j= 0 ; j< arr.length;j++) {
				   if(s.charAt(i) == arr[j]) {
					   iarr[j]++;
				   }
				   
				   
			   }
			   
		   }
		   
		   
		   for(int i= 0; i <iarr.length;i++) {
			   if ( iarr[i] == 0 ) {
				   return answer;
			   }
		   }
		   
	        List<String> list = new ArrayList();
	        list.add(s);
	        
	        
	        for(int i= 0; i <s.length()-1;i++) {
	        	char c = s.charAt(0);
	        	s = s.replaceFirst("\\"+c,"");
	        	s += c;
	        	list.add(s);
	        }
	        
	        for(int i = 0 ; i<list.size();i++) {
	        	int cnt  = 0; 
	        	String sr = list.get(i);
	        	for(int j = 0 ; j<s.length();j++) {
	        		if(sr.charAt(j) == '[' || sr.charAt(j) == '{' ||sr.charAt(j) == '('  ) {
	        			cnt++;
	        			
	        		} else {
	        			cnt--;
	        		}
	        		if(cnt < 0 ) {
	        			break;
	        		}
	        		
	        	}
	        	if( cnt == 0 ) {
	        		answer++;
	        	}
	        	
	        	
	        }
	        return answer;
    }
}

코드 설명

(1) 첫 번째로 매개변수 문자열 s의 {'[','{','(',')','}',']'}; 각각 하나씩은 들어가있는지 체크해줬다. 만약 없는 문자가 있다면 절대 유효한 괄호가 될 수 없기 때문에 바론 0을 리턴
(2) 위 과정을 통과했다면 각 자리의 문자를 카운트하여 만약 유효할 수 없는 cnt 값이 나온다면 건너뛰고 cnt == 0 으로 각 자리의 문자의 결합이 맞다면 answer 값을 증가

느낀점

전에 1Lv 괄호 문제에서 조금 심화된 것 같다. 지금 푼 정도 조건만 기억하면 괄호 문제는 잘 풀 수 있을듯!

profile
개발자 홍찬기 꾸준한 사람이 되자

0개의 댓글

관련 채용 정보