Study/코딩테스트 연습
짝지어 제거하기 (시간초과 -> 통과)
soyeonland
2024. 7. 7. 10:06
첫번째 방법: 시간초과
def solution(s):
answer = -1
i = 0
while (i<len(s)-1 and len(s)>=1):
#print('s',s)
cur_str = s[i]
next_str = s[i+1]
if cur_str == next_str:
s = s[:i] + s[i+2:]
#print('new_s',s, 'new_s',len(s))
i = 0
else:
i += 1
if len(s) == 0:
answer = 1
else:
answer = 0
return answer
두번째 방법: stack 으로 접근
(차이점은?) stack 으로 O(N)으로 해결
q 길이 신경쓰는거 때문에 시간이 좀 더 들었다.
from collections import deque
def solution(s):
answer = -1
# stack_l = []
q = deque()
q.append(s[0])
for s_item in s[1:]:
if len(q)>=1:
if q[-1] == s_item:
q.pop()
else:
q.append(s_item)
else:
q.append(s_item)
if len(q)== 0:
answer = 1
else:
answer = 0
return answer