TIL
[코테연습] 올바른 괄호
크라00
2024. 5. 23. 21:43
오늘은 스택/큐 올바른 괄호 코딩 문제를 풀어보았다.
https://school.programmers.co.kr/learn/courses/30/lessons/12909/
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
해당 문제에서 가장 중요한 점은, 올바르지 않은 괄호 일 경우는 ")" (닫는 괄호) 가 "(" ( 여는 괄호 ) 보다 먼저 나올 경우에 false 를 반환하는 것이다.
즉, 열고 닫는 괄호의 갯수를 변수로 초기화 했을때,
음수가 되거나 최종적으로 0이 되지 않으면 올바른 괄호가 아님을 인식하면 풀리는 문제라고 생각한다.
Java 코드로 문제를 푼다면 다음과 같이 코드를 작성할 수 있을 것이다.
boolean solution(String s) {
boolean answer = true;
int left = 0;
String[] arr = s.split("");
for(int i = 0; i < arr.length; i++) {
String str = arr[i];
if (str.equals("(")){
left+=1;
} else {
left-=1;
}
if (left < 0) {
answer = false;
break;
}
}
if (left != 0) answer = false;
return answer;
}
해당 답안지에서 left 변수에 열고 다는 괄호의 갯수를 초기화 하였다.
여는 괄호일 경우에는 +1 을 해주고, 닫는 괄호일 경우에는 -1을 한다.
'left' 변수가 음수일 경우에는 여는 괄호보다 닫는 괄호가 많은 경우이므로 false 를 즉시 반환하고
최종적으로 괄호를 모두 세었을 때 0이 아니라면, 여는 괄호가 많다는 뜻이 되므로 이 경우에도 올바른 괄호라고 할 수 없다.