괄호의 짝이 맞는지 확인하는 간단한 문제.
class Solution {
boolean solution(String s) {
int total = 0;
for(int i = 0; i < s.length(); i++) {
switch (s.charAt(i)) {
case '(':
total++;
break;
case ')':
if (total <= 0)
return false;
total--;
break;
default:
break;
}
}
if (total != 0)
return false;
return true;
}
}
for(int i = 0; i < s.length(); i++) {
switch (s.charAt(i)) {
case '(':
total++;
break;
case ')':
if (total <= 0)
return false;
total--;
break;
default:
break;
}
}
s에서 한 글자씩 가져온다.
만약 (
라면, total 값을 하나 증가시켜 괄호의 시작이 몇 개나 됐는지 센다.
)
라면, total 값을 하나씩 빼서 괄호가 닫혔음을 알린다.
단, 괄호의 시작이 없을 경우(total이 0일 경우) 잘못된 괄호쌍이므로 false를 반환한다.
경우의 수가 ), (
두 개이므로 if, else
로 구현하는 게 더 가독성이 좋을 것 같다.
if (total != 0)
return false;
return true;
for문이 종료되고, total이 0인 상태(괄호가 알맞게 열리고 닫혀 현재 열려있는 괄호가 없는 상태)가 아니라면 false를 반환한다.
0이라면 true 반환.
def solution(s):
val = 0
for ch in s:
val += 1 if ch == '(' else -1
if val < 0:
return False
return True if val == 0 else False
for ch in s:
val += 1 if ch == '(' else -1
if val < 0:
return False
s에서 하나씩 가져오는데, (
일 경우에는 1을 증가, )
일 경우에는 1을 감소시킨다.
만약 0보다 작아질 경우(괄호쌍이 안맞을 경우) False를 반환한다.
return True if val == 0 else False
그 후 괄호쌍이 잘 맞았다면 True, 아니라면 False를 반환한다.