문제
https://school.programmers.co.kr/learn/courses/30/lessons/159994
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
각 카드 뭉치 중 맨 앞의 카드만 사용하여 goal을 만들 수 있으면 Yes 리턴, 아니면 No 리턴
1. deque() 라이브러리
from collections import deque
deque()를 이용하여 스택과 큐처럼 이용할 수 있다.
deque() 생성
queue = deque()
queue = deque([1,2,3,4,5])
deque() 함수
.appendleft(x) 맨 앞 추가
.popleft() 맨 앞 삭제
.append(x) 맨 뒤 추가
.pop() 맨 뒤 삭제
008 앞뒤에서 자료를 넣고 빼려면? ― collections.deque
deque는 앞과 뒤에서 데이터를 처리할 수 있는 양방향 자료형으로, 스택(stack)처럼 써도 되고 큐(queue)처럼 써도 된다. collections.deque 모듈은 de…
wikidocs.net
맨 뒤에 추가하고 삭제하기
deque: append(x) 와 pop()
list: append(x) 와 pop()
시간복잡도 동일 O(1)
맨 앞에 추가하고 삭제하기
deque: appendleft(x), popleft()
list: insert(0, x) 와 pop(0)
시간복잡도 O(1), O(n)
데크와 리스트의 시간복잡도
https://wellsw.tistory.com/122
[파이썬] 덱 vs 리스트 속도 차이? (deque vs list speed 차이)
덱과 리스트? 여러분은 어떤 차이를 두고 두 자료구조를 적절하게 사용하시나요? 둘 다 사용상에는 큰 차이가 없어 보입니다. 그렇지만, 이 자료구조를 어떤 상황에서 어떻게 사용하느냐에 따라
wellsw.tistory.com
카드뭉치의 맨 앞을 보고, 삭제하기 위해서 시간이 덜 걸리는 deque() 사용
인덱스 에러를 방지하기 위해 cards1 cards2안에 적어도 하나의 문자열은 들어있도록 함( 카드 길이가 2이상일 때만 popleft() )
from collections import deque
def solution(cards1, cards2, goal):
cards1 = deque(cards1)
cards2 = deque(cards2)
answer = ''
#goal을 돌면서 cards1 제일 앞에 있는지 본다
for i in goal:
if i != cards1[0] and i != cards2[0]:
return "No"
if i == cards1[0]:
if len(cards1)>1:
cards1.popleft()
if i == cards2[0]:
if len(cards2)>1:
cards2.popleft()
return "Yes"
'코딩테스트 문제' 카테고리의 다른 글
[프로그래머스/Python] 기능개발 (0) | 2024.01.20 |
---|---|
[프로그래머스/Python] 햄버거 만들기 (0) | 2024.01.20 |
[프로그래머스/Python] 숫자 짝궁 (0) | 2024.01.11 |
[프로그래머스/Python] 시저 암호 (0) | 2024.01.11 |
[프로그래머스/Python] 신고 결과 받기 (0) | 2024.01.11 |