첫번째 풀이는 아래와 같다.
def solution(s):
q = ""
for i in s:
q += i
if "()" in q:
q = q.replace("()","")
if q == "":
answer = True
else:
answer = False
return answer
문자열에 문자를 하나씩 추가한 다음 ()가 완성될때마다 공백으로 치환하였다.
다만 시간초과가 떠서 통과하지 못하였다.
아마 replace함수를 사용하는 것이 시간초과의 원인인 것 같다.
정답코드는 아래와 같다.
def solution(s):
answer = True
stack = []
for b in s:
if b == '(':
stack.append(b)
elif len(stack) and b == ')':
stack.pop()
else:
return False
return False if len(stack) else True
Stack 자료구조(파이썬에서는 리스트)를 이용해 '('는 바로 stack에 추가하고 (if문), '('가 있는 상태에서 ')'가 들어가면 기존의 '('를 삭제하고 (elif문), 마지막으로 stack에 아무것도 없는 상태에서 ')'가 들어오면 False를 return (else문) 한다.
'Coding > 알고리즘 오답' 카테고리의 다른 글
프로그래머스 level2 _ 짝지어 제거하기 [Python] (0) | 2023.01.11 |
---|---|
프로그래머스 level2 _ 숫자의 표현 [Python] (0) | 2023.01.10 |
프로그래머스 level2 _ 최솟값 만들기 [Python] (0) | 2022.12.31 |
프로그래머스 level2 _ JadenCase 문자열 만들기 [Python] (0) | 2022.12.30 |
(그리디) 백준 20365번 _ 블로그2 [Python] (0) | 2022.10.05 |
댓글