https://school.programmers.co.kr/learn/courses/30/lessons/12909
필자는 이 문제를 다음과 같이 풀었다.
1. 반복문을 돌면서 원소값이 '(' 라면 cnt에 1을 더해주고, ')'라면 cnt에 1을 빼준다.
2. cnt가 음수가 나오는 순간 반복문을 멈추고 False를 리턴한다.
3. 음수가 아니라면 cnt가 계산되어 반복문을 빠져나온다. 이 때 cnt = 0이라면 True를, 그 외라면(cnt > 0) False를 반환한다. 왜냐하면 cnt = 0이어야만 '('과 ')'가 같은 수만큼 나온 것이기 때문에. 그 이외의 경우는 전부 False다.
이것을 코드로 나타낸 것이 아래의 코드다.
def solution(s):
s_list = list(s)
cnt = 0
for i in range(len(s_list)):
if s_list[i] == '(':
cnt += 1
else:
cnt -= 1
if cnt < 0:
return False
break
if cnt == 0:
return True
else:
return False
정답은 맞지만, 뭔가 코드가 지저분해 보여서 좀 정리해봤다.
def solution(s):
cnt = 0
for char in s:
cnt += 1 if char == '(' else -1
if cnt < 0:
return False
return cnt == 0
'Algorithm > 코딩테스트 고득점 Kit' 카테고리의 다른 글
[고득점 Kit / 스택&큐] 주식가격 (2) | 2024.09.06 |
---|---|
[고득점 Kit / 스택&큐] 프로세스 (0) | 2024.09.06 |
[고득점 Kit / 스택&큐] 기능개발 (0) | 2024.09.05 |
[고득점 Kit / 스택&큐] 같은 숫자는 싫어 (0) | 2024.09.04 |
[고득점 Kit / 해시] 의상 (Counter, 리스트 컴프리헨션) (0) | 2024.09.02 |