코딩 테스트

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

로승리 2021. 12. 15. 13:35

몇 가지의 조건을 하나씩 만족시키며 코드를 작성하는 느낌이었다.

1. 첫번째 괄호가 닫힌 괄호 ) 이면 false

2. 열린 괄호인 ( 이면 cnt의 값을 증가

3. 열린 괄호보다 닫힌 괄호가 많으면 false

4. cnt에서 열린 괄호가 있으면 cnt를 감소

5. 최종적으로 cnt의 값이 0인지 검사 후 리턴

 

퍼즐 푸는것 같은 느낌의 문제여서 재밌었다.


최종 코드

class Solution {
    boolean solution(String s) {
        boolean answer = true;
        
        int cnt = 0;
        // 첫번째 괄호가 )이면 false
		if(s.charAt(0) == ')') {
			answer = false;
		}
		
		for(int i=0; i<s.length(); i++) {
            // 열린 괄호라면
			if(s.charAt(i) == '(') {
				cnt++;
			}
			else {
                // 열린 괄호보다 닫힌 괄호가 많으면
				if(cnt <= 0) {
					answer = false;
				}
                // cnt에 열린 괄호가 있으면
				cnt--;
			}
		}
		if(cnt != 0) {
			answer = false;
		}

        return answer;
    }
}