코테 준비/프로그래머스

[level 1] 카드 뭉치

쿠쿠*_* 2023. 5. 10. 01:03

https://school.programmers.co.kr/learn/courses/30/lessons/159994

 

프로그래머스

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

programmers.co.kr

내가 한 풀이는 단순히 맨 앞에 있는 원소가 해당되는지 확인하고 pop시켜서 for문을 돌린것이다. 물론 정답은 맞았지만 다른 풀이들도 한번 살펴보자! (더 직관적으로 코드 짜기)

#내가 짠 코드
def solution(cards1, cards2, goal):
    #순서가 중요
    answer = ''
    flag=True
    for i in range(len(goal)-1):
        #print(cards1,cards2)
        if len(cards1)!=0 and goal[i] == cards1[0]:
            print(cards1[0])
            cards1.pop(0)
        elif len(cards2)!=0 and goal[i] ==cards2[0]:
            print(cards2[0])
            cards2.pop(0)
        else:
            flag=False
            break
            
    if flag==True:
        return "Yes"
    else:
        return "No"

코드 1

def solution(cards1, cards2, goal):
    answer = []
    n = len(cards1)
    m = len(cards2)
    
    i = j = 0
    for word in goal:
        if i < n and word == cards1[i]:
            answer.append(cards1[i])
            i += 1
            
        if j < m and word == cards2[j]:
            answer.append(cards2[j])
            j += 1
        
    return 'Yes' if answer == goal else 'No'

코드 2

from collections import deque

def solution(cards1, cards2, goal):
    cards1 = deque(cards1)
    cards2 = deque(cards2)
    
    for word in goal:
        if len(cards1)!=0 and word == cards1[0]: cards1.popleft()
        elif len(cards2)!=0 and word == cards2[0]: cards2.popleft()
        else: return 'No'
    
    return 'Yes'

 

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

[level 1] 대충 만든 자판  (0) 2023.05.10
[level 1] 덧칠하기  (0) 2023.05.10
[level 1] 둘만의 암호  (0) 2023.05.09
[level 1] 개인정보 수집 유효기간  (0) 2023.05.09
[level 1] 문자열 나누기  (0) 2023.05.04