![]() |
[LV2]짝지어 제거하기 링크 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. www.programmers.co.kr |


문제해설
이 문제는 반복문을 사용하여 각각의 문자를 스택에 집어넣어 비교하여 서로 같은 문자이면 제거하여 최종적으로 스택에 문자가 남아있으면 0을반환 그렇지 않으면 1을 반환하면 되는 문제이다. 이 문제에서 길이가 홀수인 문자는 항상 스택에 문자가 남을 수 밖에 없으므로 0을 반환하게 처리하였다.
def solution(s):
stack=[] #스택
for i in range(len(s)): #문자열의 길이만큼 반복
if len(s)%2==1: #만약 문자열 길이가 홀수이면 반복문 중단후 0을반환
return 0
if len(stack)==0:# 스택에 아무것도 없으면 문자를 집어넣는다
stack.append(s[i])
else: #그렇지 않으면
if stack[-1]==s[i]: #비교하여서 같은문자이면 제거한다
stack.pop()
else: # 만약 같은 문자가 아니라면 스택에 보관한다
stack.append(s[i])
if len(stack)==0: #스택이 비어있으면 1을 반환
return 1
else: #그렇지 않으면 0을반환한다
return 0

문제를 풀면서 아쉬웠던 점
처음 이 문제를 봤을때 바로 스택이 생각나지 않았고 replace함수를 사용하여서 겹치는 부분을 일일이 제거해주는 방법을 사용했다. 하지만 이렇게 한 결과 시간초과가 생기며 상당히 비효율적인 코드가 만들어졌다. 알고리즘 실력이 많이 부족하다고 느꼈다... 더 열심히 해야겠다
'algorithm > 프로그래머스 문제' 카테고리의 다른 글
[프로그래머스 LV2] 튜플 (0) | 2022.07.14 |
---|---|
[LV2]위장 (0) | 2022.07.13 |
[LV2]전화번호 목록 (0) | 2022.07.13 |
[LV2]조이스틱 (0) | 2022.07.12 |
[LV2]타겟 넘버 (0) | 2022.07.11 |