반응형
https://school.programmers.co.kr/learn/courses/30/lessons/159994
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
from collections import deque
def solution(cards1, cards2, goal):
cards1 = deque(cards1)
cards2 = deque(cards2)
goal = deque(goal)
while goal:
if cards1:
c1 = cards1.popleft()
if cards2:
c2 = cards2.popleft()
g = goal.popleft()
if g == c1:
cards2.appendleft(c2)
elif g == c2:
cards1.appendleft(c1)
else:
return 'No'
return 'Yes'
cards1
, cards2
에서 goal
을 만들 수 있는 지 확인하는 방법이 아니라
반대로 goal
에서 cards1
, cards2
에 있는 단어들이 규칙에 맞게 올바르게 되어있는지 확인하는 방법으로 문제를 해결하였습니다.
먼저 주어진 cards1
, cards2
, goal
을 deque
자료구조로 바꾸어주어 앞에서부터 단어를 꺼내면서 확인할 수 있도록 만들었습니다.
goal
이 빌때까지 반복하면서 cards1
, cards2
가 비어있지 않다면 가장 앞에 있는 단어 c1
, c2
를 추출하고, goal
의 가장 앞에 있는 단어인 g
와 비교하게 됩니다.
- 이때
cards1
에 있는c1
과g
가 동일하다면c2
는goal
의 다음 단어와 확인하기 위하여appendleft()
로cards2
에 가장 앞으로 저장됩니다. - 반대 상황 또한 마찬가지입니다.
하지만 위의 두 조건이 아니라 (타겟)단어 g
와 c1
, c2
모두가 동일하지 않다면 주어진 cards1
, cards2
로 goal
을 만들 수 없다는 의미이기 때문에 No
를 반환하게 됩니다.
만약 위의 반복문을 통과한다면 주어진 cards1
, cards2
로 goal
을 만들 수 있다는 의미 이기 때문에 Yes
를 반환합니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 주차 요금 계산 파이썬(Python) (0) | 2023.02.23 |
---|---|
[코딩테스트] 프로그래머스 미로 탈출 파이썬(Python) (0) | 2023.02.21 |
[코딩테스트] 백준 결혼식 파이썬(Python) (0) | 2023.02.18 |
[코딩테스트] 백준 유레카 이론 파이썬(python) (0) | 2023.02.17 |
[코딩테스트] 백준 A 와 B 2 파이썬(Python) (0) | 2023.02.16 |