https://school.programmers.co.kr/learn/courses/30/lessons/12909
스택 연습문제로 되어있지만 사실 스택 없이도 풀 수 있는 문제입니다.
잘 생각해 보면 올바른 괄호는 '여는 괄호와 닫는 괄호의 수가 같고' 여는 괄호보다 닫는 괄호가 많이 나오지 않는 형태입니다. 닫는 괄호가 많아진다면 반드시 잘못된 형태지만 여는 괄호가 많은 경우는 이후에 나오는 닫는 괄호와 짝을 이루어 올바른 형태가 될 수 있기 때문이죠.
따라서 입력을 한 번 순회하면서 여는 괄호보다 닫는 괄호가 많아지는지, 입력을 다 순회하고 나서 열고 닫는 괄호 짝이 전부 만들어졌는지를 체크하면 됩니다.
두 경우 모두 만족하지 못하는 순간 False를 return 하면 됩니다.
class Solution {
boolean solution(String s) {
boolean answer = true;
char[] cArr = s.toCharArray();
int count = 0;
for(int i = 0; i < cArr.length; i++){
if(cArr[i] == '(') {
count += 1;
}else {
count -= 1;
}
if(count < 0) {
answer = false;
break;
}
}
if(count != 0) {
answer = false;
}
return answer;
}
}
'🔍 알고리즘 > 프로그래머스 Java' 카테고리의 다른 글
[Java] 프로그래머스 12941. 최솟값 만들기 (Lv.2) (0) | 2022.10.25 |
---|---|
[Java] 프로그래머스 12951. JadenCase 문자열 만들기 (Lv.2) (0) | 2022.10.25 |
[Java] 프로그래머스 12939. 최댓값과 최솟값 (Lv.2) (0) | 2022.10.24 |
[Java] 프로그래머스 132267. 콜라문제 (Lv.1) (0) | 2022.10.24 |
[Java] 프로그래머스 131705. 삼총사 (Lv.1) (0) | 2022.10.24 |