본문 바로가기
프로그래머스/Python

[프로그래머스] 카드 뭉치 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 23.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

  1. popleft() 함수를 사용하기 위해 카드 뭉치를 deque 자료구조로 만든다. deque 자료구조를 사용하기 위해 deque 모듈을 불러온다. from collections import deque
  2. 틀린 경우만 찾아내기 위해 초기 결과를 Yes로 저장한다. answer = 'Yes'
  3. 두 카드 뭉치를 deque 자료로 변경한다. cards1 = deque(cards1)  cards2 = deque(cards2)
  4. 만들어야 할 문장의 각 단어를 하나씩 추출한다. for i in goal
  5. 만약 첫 번째 카드 뭉치에 카드가 남아 있고 해당 카드 뭉치의 첫 번째 단어가 추출한 단어와 동일하면 if (len(cards1) != 0) and (i == cards1[0])
  6. 카드 뭉치의 제일 앞 단어를 제거한다. cards1.popleft()
  7. 만약 두 번째 카드 뭉치에 카드가 남아 있고 해당 카드 뭉치의 첫 번째 단어가 추출한 단어와 동일하면 elif (len(cards2) != 0) and (i == cards2[0])
  8. 카드 뭉치의 제일 앞 단어를 제거한다. cards2.popleft()
  9. 반면에 추출한 단어가 두 카드 뭉치의 첫 번째 단어와 동일하지 않다면 else
  10. 문장을 완성시킬 수 없다. answer = 'No'
  11. 더 이상 문장을 완성시킬 수 없으므로 종료한다. break
반응형

3. 소스코드

from collections import deque

def solution(cards1, cards2, goal):
    answer = 'Yes'
    
    cards1 = deque(cards1)
    cards2 = deque(cards2)
    for i in goal:
        if (len(cards1) != 0) and (i == cards1[0]):
            cards1.popleft()
        elif (len(cards2) != 0) and (i == cards2[0]):
            cards2.popleft()
        else:
            answer = 'No'
            break
        
    return answer
728x90
반응형