몇 가지의 조건을 하나씩 만족시키며 코드를 작성하는 느낌이었다.
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;
}
}
'코딩 테스트' 카테고리의 다른 글
(Java) 프로그래머스 가장 큰 정사각형 찾기 (0) | 2021.12.20 |
---|---|
(Java) 프로그래머스 땅따먹기 (0) | 2021.12.15 |
(Java) 프로그래머스 다음 큰 숫자 (0) | 2021.12.15 |
(Java) 프로그래머스 최댓값과 최솟값 (Lv 2) (0) | 2021.12.15 |
(Java) 프로그래머스 최솟값 만들기 (0) | 2021.12.04 |