코딩 테스트

프로그래머스) 올바른 괄호 Lv2

우루쾅 2024. 2. 8. 13:08
728x90
반응형
SMALL

이번에도 래벨 2 도전!

 

문자열 s 에 랜덤의 (, ) 괄호가 주어지고 괄호를 바르게 짝지었을 때 true, 아닐 경우 false 를 리턴하는 문제이다.

 

처음 문제를 풀 때 () 코드가 있을 경우 "" 으로 변경을 하는 코드를 작성했다! 

돌려보니 문제는 모두 맞는데 효율성의 문제가 발생했다...

 

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        int cur = 0;
        
        while(s.length() >= 0){
            int fur = s.length();
            s = s.replaceAll("\\(\\)","");
            
            if(s.length() == 0){
                break;
            }
            if(cur == fur){
                break;
            }
            cur = fur;
        }
        
        return s.equals("") ? true : false;
    }
}

 

 

고민을 해보다가 위 코드에서는 효율성을 고치기 너무 힘들 것 같아서 처음부터 다시 코딩했다;;

 

( 는 +1, ) 는 -1 로 변경했을 때 총 합이 0이 나오게끔 하고 합이 0보다 작을 경우 리턴을 하는 방식으로 문제를 해결했다!

 

 

 


 

정답

import java.util.*;

class Solution {
    boolean solution(String s) {
        int sum = 0;
        char crr[] = new char[s.length()];
        
        for(int i=0; i<s.length(); i++){
            crr[i] = s.charAt(i);
        }
        
        for(char i : crr){
            if(i == '(') sum += 1;
            else sum -= 1;
            
            if(sum < 0) break;
        }
        
        return sum == 0;
    }
}

 

 

출처

프로그래머스 - https://school.programmers.co.kr/learn/courses/30/lessons/12909

728x90
반응형
LIST