최대 1 분 소요

문제 링크

내 풀이

def solution(cards1, cards2, goal):
    words = []
    a = cards1
    b = cards2
    for word in goal:
        if cards1:
            if word == a[0]:
                words.append(word)
                a.pop(0)
        if cards2:
            if word == b[0]:
                words.append(word)
                b.pop(0)
    if words == goal:
        answer = "Yes"
    else:
        answer = "No"
    return answer
            

다른 풀이

def solution(cards1, cards2, goal):
   
    # goal을 하나씩 검사합니다.
    for i in goal:
       
        # 만약 cards1이 비어있지 않고, 현재 단어(i)가 cards1의 맨 앞에 있는 경우
        if cards1 and i == cards1[0]:
            del cards1[0] # cards1에서 맨 앞의 원소를 제거합니다.
           
        # cards2가 비어있지 않고, 현재 단어(i)가 cards2의 맨 앞에 있는 경우
        elif cards2 and i == cards2[0]:
            del cards2[0]  # cards2에서 맨 앞의 원소를 제거합니다.
       
        # 현재 단어를 cards1 또는 cards2에서 찾을 수 없으면 "No"를 반환합니다.
        else:
            return "No"
   
    # 모든 단어를 순서대로 검사하고 "No"가 반환되지 않았다면 "Yes"를 반환합니다.
    return "Yes"

풀이 해석

goal안의 원소가 cards1[0] 과 같을시에 cards1의 맨앞 원소 제거 i 가 cards1과 cards2의 값중에서 찾을 수 없으면 바로 return “No” 정상적으로 진행되면 return “Yes”

배울 점

  • cards1,2가 비어있는지와 맨앞카드가 goal원소랑 같은지 if문 하나로 동시에 확인하는 것
  • 즉시 return을 활용하는 사고

댓글남기기