코딩테스트 연습/프로그래머스
[Python] 프로그래머스 코딩테스트 연습 LV2 - 짝지어 제거하기
환타몬
2022. 2. 14. 13:05
https://programmers.co.kr/learn/courses/30/lessons/12973?
코딩테스트 연습 - 짝지어 제거하기
짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙
programmers.co.kr
while문으로해서 문자열을 비교한 후, replace 함수를 이용해서 해당하는 문자열을 삭제하는 로직으로 접근하려 한다.
My A ( 시간 초과 ):
def solution(s):
answer = -1
i = 0
while i<len(s)-1:
if (s[i:i+1]==s[i+1:i+2]):
s = s.replace(s[i:i+2],'')
i = 0
else :
i += 1
if s :
return 0
else :
return 1
return answer
로직 자체는 틀린 것 같진 않으나, 아무래도 i를 자꾸 0으로 초기화시키다보니 데이터가 많아질수록 불필요한 탐색이 많아져 시간 초과 에러가 나는 것 같다.
Other A:
def solution(s):
answer = -1
stack = []
for i in s:
if len(stack) == 0 :
stack.append(i)
elif stack[-1] == i:
stack.pop()
else:
stack.append(i)
if stack : return 0
else : return 1
return answer
스택 리스트를 만들어서 스택과 문자열을 비교하고, 해당 문자열과 일치하면 스택에서 삭제하고, 그렇지 않으면 스택에 쌓여서 비교하는 로직이다.