본문 바로가기
알고리즘 문제풀이

프로그래머스 - 올바른 괄호

by 임동무 2022. 10. 24.

프로그래머스 올바른 괄호 Java 풀이

 

1. 문제

 

2. 풀이

 

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        int[] ints = s.chars().toArray();
        int sum = 0;
        for (int e : ints) {
            if (e == '(') {
                sum += 1;
            } else {
                sum -= 1;
            }
            if (sum < 0) {
                answer = false;
            }
        }

        if (sum != 0) {
            answer = false;
        }

        return answer;
    }
}

 

문제의 핵심은 

1. 괄호는 닫기 전에 항상 열려야 한다. -> 닫은 횟수가 여는 횟수를 초과하면 안된다.

2. 괄호의 열고 닫은 횟수의 총 합은 0 이 되어야 한다. 

 

String 으로 들어온 괄호 문자열 하나하나를 받기 위해 int형 배열로 바꿔주었고 열고 닫은 횟수의 합의 정보를 담을 sum 을 정의했다. 

열는 괄호일 경우 +1, 닫는 괄호일 경우 -1 을 해주었으며 

'1' 을 만족시키기 위해 sum 이 음수가 되면 false 를 반환하도록 했다.

 

마지막으로 반복문을 탈출한 후 '2' 를 만족하지 않는 경우 false 를 반환하도록 하면 원하는 결과를 얻을 수 있다.

댓글