개발자가 된 감자

[프로그래머스] Lv.2 올바른 괄호 본문

Coding Test/프로그래머스

[프로그래머스] Lv.2 올바른 괄호

감자씨 2024. 11. 24. 23:46
728x90

프로그래머스

'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고,
올바르지 않은 괄호이면 false를 return 하기

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다



1. 변수 초기화

boolean answer = true; // 기본 정답 값 true
int a = 0; // 괄호 횟수
char[] array = s.toCharArray(); // 문자열 char 배열로 초기화


2. 만약 문자열의 길이가 홀수일 경우 false로 리턴

if(array.length%2 != 0){ 
    return false; 
 }


3. 괄호 별 나오는 순서에 따라 a 값 증감 처리

for(int i=0; i<array.length; i++){
    if(array[i] == 40) { // 아스키코드 40 -> '(' 일 경우, a 증가 처리
        a++;
    } else if(array[i] == 41) a--; // ')' 일 경우 a 감소 처리

    if(a<0 || (i==array.length-1 && a>0)) { // a가 0보다 작아지거나, 마지막 순서에 a가 0보다 클 경우
        return false;
    }
}

return answer;



전체 코드

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        int a = 0;
        char[] array = s.toCharArray();

        if(array.length%2 != 0){ 
            return false; 
         }
        
        for(int i=0; i<array.length; i++){
            if(array[i] == 40) {
                a++;
            } else if(array[i] == 41) a--;
            
            if(a<0 || (i==array.length-1 && a>0)) {
                return false;
            }
        }

        return answer;
    }
}
728x90
Comments