코딩테스트 준비를 조금이라도 해 본 사람은 한 번쯤이라도 풀어봤을법한 문제다
def solution(s):
answer = True
cnt = 0
for i in s:
if i=="(":
cnt+=1
elif i==")":
cnt-=1
if cnt<0:
answer = False
break
if cnt!=0:
answer = False
return answer
기존에 알고 있던 방법대로 풀어서 정확성/효율성 전부 통과하기는 했는데, 효율성 문제가 조금 오래걸렸다. 아마 s 길이가 10^5 이하여서 그런 것 같다
그래서 문제 유형도 스택/큐라고 나와있길래 스택/큐로 푸는 방법을 검색해봤다
def solution(s):
stack = []
for i in s:
if i=="(":
stack.append(i)
else:
#짝이 맞지 않는 경우
if not stack:
return False
break
#(가 이미 들어있기 때문에 짝이 맞는 경우
else:
stack.pop()
answer = (stack==[])
return answer
stack에 넣고 빼는 과정이 cnt를 더하고 빼는 연산과정보다 더 빠른건지, 이전 풀이보다 더 빨리 답이 나왔다
더 긴 문자열이 나올수도 있으니 이 방법도 외워둬야겠다!