코딩 테스트/프로그래머스

Lv2. 짝지어 제거하기

  • -
728x90
반응형

문제 보기 :  짝지어 제거하기

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


문제

  • 정답률 : 73%


작성 코드

from collections import deque
def solution(s):
    s = deque(list(s))
    ss = []
    for _ in range(len(s)): 
        a1 = s.popleft() #["b","a","a","b","a","a"]
        if ss == []:
            ss.append(a1)
        elif ss[-1] == a1:
            ss.pop()
        elif ss[-1] != a1:
            ss.append(a1)
                
    if ss != []:
        return 0
    else:
        return 1

풀이

deque로 풀어야 시간초과가 나지 않는다.

deque에서 하나씩 pop하며 조건에 맞게 처리한다.
빈 리스트이면 pop한 원소를 추가하고,
리스트의 마지막 원소가 deque에서 pop한 원소와 같다면 리스트의 마지막 원소를 제거한다.
그리고 같지 않다면 pop한 원소를 리스트에 그대로 추가한다.

한 바퀴 모두 돌았을 때 리스트가 빈 리스트라면 0을 return 하고, 원소가 하나라도 있다면 1을 출력한다.

320x100
728x90

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

Lv2. H-Index  (0) 2024.08.01
Lv2. 의상  (0) 2024.08.01
Lv2. 숫자의 표현  (0) 2024.07.27
Lv1. 옹알이(2)  (0) 2024.07.27
Lv3. 정수 삼각형  (0) 2024.07.17
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.