문제
짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다.
먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다.
그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다.
이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다.
풀이
from collections import deque
def solution(s):
dq=deque()
dq.append(s[0])
for i in range(1,len(s)):
if len(dq)>0 and dq[-1]==s[i]:
dq.pop()
else:
dq.append(s[i])
if len(dq)==1:return 0
while dq:
x=dq.popleft()
if len(dq)>0 and dq[0]==x: dq.popleft()
else: return 0
return 1
첫번째 문자를 deque에 넣고 다음 문자와 같으면 pop, 다르면 push 했다.
1차 연산이 끝난 뒤엔 큐가 빌때까지 큐 앞뒤 원소들을 비교하며 pop 해서 풀이하였다.
반응형
'Problem Solving > Programmers' 카테고리의 다른 글
프로그래머스 (Level 1) : 신고 결과 받기 / Python / 2022 KAKAO BLIND RECRUITMENT (1) | 2022.05.12 |
---|---|
프로그래머스 (Level 1) : 크레인 인형뽑기/ Python / 2019 카카오 개발자 겨울 인턴십 코딩테스트 (0) | 2022.05.11 |
프로그래머스 (Level 3) : 이중우선순위큐 / Python, heapq, try-except (0) | 2022.05.05 |
프로그래머스 (Level 2) : 더맵게 / Python, heapq, try-except (0) | 2022.05.05 |
SQL (Level 2) : 동명 동물 수 찾기 - MySQL, Group by, Having (0) | 2022.05.05 |