728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12909?language=python3
풀이과정
1. 시작은 "(" (열린 괄호)로 한다.
2. ")" (닫힌 괄호)가 나오기 전까지 "("를 쌓는다. ")"가 나오면 "("를 꺼낸다.
3. 체크 종료 후 "("가 남아 있으면 올바르지 않은 괄호, False를 반환한다.
Script
def solution(s):
if s[0] == ")":
return False
checks = []
for c in list(s):
if c == "(":
checks.append(c)
else:
checks.pop() if checks else None
answer = True if len(checks) == 0 else False
return answer
다른 풀이
메모리 효율성을 위해 list가 아닌 숫자로 체크하는 것이 더 좋은 방법 같다.
def is_pair(s):
x = 0
for w in s:
if x < 0:
break
x = x+1 if w=="(" else x-1 if w==")" else x
return x==0
728x90
반응형
'Coding Test' 카테고리의 다른 글
[Programmers] 완주하지 못한 선수 (python) (1) | 2023.01.16 |
---|---|
[Programmers] 더 맵게 (0) | 2022.11.01 |
[Programmers] 가장큰수 (0) | 2022.08.06 |
[Programmers] 도둑질 (0) | 2022.08.04 |
[Programmers] 기능개발 (0) | 2022.07.20 |