프로그래머스 Lv2. 올바른 괄호 (Java / Python)

eora21·2022년 9월 3일
0

프로그래머스

목록 보기
11/38

문제 링크

문제 간단 해석

괄호의 짝이 맞는지 확인하는 간단한 문제.

Java

풀이 코드

class Solution {
    boolean solution(String s) {
        int total = 0;

        for(int i = 0; i < s.length(); i++) {
            switch (s.charAt(i)) {
                case '(':
                    total++;
                    break;
                case ')':
                    if (total <= 0)
                        return false;
                    total--;
                    break;
                default:
                    break;
            }
        }

        if (total != 0)
            return false;

        return true;
    }
}

해석

for(int i = 0; i < s.length(); i++) {
    switch (s.charAt(i)) {
        case '(':
            total++;
            break;
        case ')':
            if (total <= 0)
                return false;
            total--;
            break;
        default:
            break;
    }
}

s에서 한 글자씩 가져온다.
만약 (라면, total 값을 하나 증가시켜 괄호의 시작이 몇 개나 됐는지 센다.
)라면, total 값을 하나씩 빼서 괄호가 닫혔음을 알린다.
단, 괄호의 시작이 없을 경우(total이 0일 경우) 잘못된 괄호쌍이므로 false를 반환한다.

경우의 수가 ), ( 두 개이므로 if, else로 구현하는 게 더 가독성이 좋을 것 같다.

if (total != 0)
    return false;

return true;

for문이 종료되고, total이 0인 상태(괄호가 알맞게 열리고 닫혀 현재 열려있는 괄호가 없는 상태)가 아니라면 false를 반환한다.
0이라면 true 반환.

Python

풀이 코드

def solution(s):
    val = 0
    for ch in s:
        val += 1 if ch == '(' else -1
        if val < 0:
            return False

    return True if val == 0 else False

해석

for ch in s:
    val += 1 if ch == '(' else -1
    if val < 0:
        return False

s에서 하나씩 가져오는데, (일 경우에는 1을 증가, )일 경우에는 1을 감소시킨다.
만약 0보다 작아질 경우(괄호쌍이 안맞을 경우) False를 반환한다.

return True if val == 0 else False

그 후 괄호쌍이 잘 맞았다면 True, 아니라면 False를 반환한다.

profile
나누며 타오르는 프로그래머, 타프입니다.

0개의 댓글