πŸ“Œ 파이썬 μœΌλ‘œ 풀이

 

πŸ“Œ λ¬Έμ œ 링크 :

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ λ§€μΉ­. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 λ§€μΉ­ λ°›μœΌμ„Έμš”.

programmers.co.kr

 

πŸ“Œ λ¬Έμ œ μ„€λͺ… :

μ½”λ‹ˆλŠ” μ˜μ–΄ 단어가 적힌 μΉ΄λ“œ λ­‰μΉ˜ 두 개λ₯Ό μ„ λ¬Όλ‘œ λ°›μ•˜μŠ΅λ‹ˆλ‹€. μ½”λ‹ˆλŠ” λ‹€μŒκ³Ό 같은 κ·œμΉ™μœΌλ‘œ μΉ΄λ“œμ— 적힌 단어듀을 μ‚¬μš©ν•΄ μ›ν•˜λŠ” μˆœμ„œμ˜ 단어 배열을 λ§Œλ“€ 수 μžˆλŠ”μ§€ μ•Œκ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

  • μ›ν•˜λŠ” μΉ΄λ“œ λ­‰μΉ˜μ—μ„œ μΉ΄λ“œλ₯Ό μˆœμ„œλŒ€λ‘œ ν•œ μž₯μ”© μ‚¬μš©ν•©λ‹ˆλ‹€.
  • ν•œ 번 μ‚¬μš©ν•œ μΉ΄λ“œλŠ” λ‹€μ‹œ μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
  • μΉ΄λ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  λ‹€μŒ μΉ΄λ“œλ‘œ λ„˜μ–΄κ°ˆ 수 μ—†μŠ΅λ‹ˆλ‹€.
  • 기쑴에 μ£Όμ–΄μ§„ μΉ΄λ“œ λ­‰μΉ˜μ˜ 단어 μˆœμ„œλŠ” λ°”κΏ€ 수 μ—†μŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ 첫 번째 μΉ΄λ“œ λ­‰μΉ˜μ— μˆœμ„œλŒ€λ‘œ ["i", "drink", "water"], 두 번째 μΉ΄λ“œ λ­‰μΉ˜μ— μˆœμ„œλŒ€λ‘œ ["want", "to"]κ°€ μ ν˜€μžˆμ„ λ•Œ ["i", "want", "to", "drink", "water"] μˆœμ„œμ˜ 단어 배열을 λ§Œλ“€λ €κ³  ν•œλ‹€λ©΄ 첫 번째 μΉ΄λ“œ λ­‰μΉ˜μ—μ„œ "i"λ₯Ό μ‚¬μš©ν•œ ν›„ 두 번째 μΉ΄λ“œ λ­‰μΉ˜μ—μ„œ "want"와 "to"λ₯Ό μ‚¬μš©ν•˜κ³  첫 번째 μΉ΄λ“œλ­‰μΉ˜μ— "drink"와 "water"λ₯Ό μ°¨λ‘€λŒ€λ‘œ μ‚¬μš©ν•˜λ©΄ μ›ν•˜λŠ” μˆœμ„œμ˜ 단어 배열을 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

λ¬Έμžμ—΄λ‘œ 이루어진 λ°°μ—΄ cards1, cards2와 μ›ν•˜λŠ” 단어 λ°°μ—΄ goal이 λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, cards1κ³Ό cards2에 적힌 λ‹¨μ–΄λ“€λ‘œ goalλ₯Ό λ§Œλ“€ μžˆλ‹€λ©΄ "Yes"λ₯Ό, λ§Œλ“€ 수 μ—†λ‹€λ©΄ "No"λ₯Ό returnν•˜λŠ” solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

 

πŸ“Œ μ œν•œ 사항

  • 1 ≤ cards1의 길이, cards2의 길이 ≤ 10
    • 1 ≤ cards1[i]의 길이, cards2[i]의 길이 ≤ 10
    • cards1κ³Ό cards2μ—λŠ” μ„œλ‘œ λ‹€λ₯Έ λ‹¨μ–΄λ§Œ μ‘΄μž¬ν•©λ‹ˆλ‹€.
  • 2 ≤ goal의 길이 ≤ cards1의 길이 + cards2의 길이
    • 1 ≤ goal[i]의 길이 ≤ 10
    • goal의 μ›μ†ŒλŠ” cards1κ³Ό cards2의 μ›μ†Œλ“€λ‘œλ§Œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€.
  • cards1, cards2, goal의 λ¬Έμžμ—΄λ“€μ€ λͺ¨λ‘ μ•ŒνŒŒλ²³ μ†Œλ¬Έμžλ‘œλ§Œ 이루어져 μžˆμŠ΅λ‹ˆλ‹€.

 

πŸ“Œ μž…μΆœλ ₯ 예


μΆ”μΈ‘) 

μ„œλ‘œ λ‹€λ₯Έ λ‹¨μ–΄λ§Œ μ‘΄μž¬ν•œλ‹€. ν•œλ²ˆ μ‚¬μš©ν•œ μΉ΄λ“œλŠ” λ‘λ²ˆ μ‚¬μš© λΆˆκ°€. μΉ΄λ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  λ‹€μŒ μΉ΄λ“œλ‘œ λͺ» λ„˜μ–΄κ°. 단어 μˆœμ„œ λ³€ν™” λΆˆκ°€. 

goal을 κΈ°μ€€μœΌλ‘œ for문을 λŒλ €μ„œ 두가지 μΉ΄λ“œ λ­‰μΉ˜ κ°€μž₯ 처음과 λΉ„κ΅ν•΄μ„œ 처음과 μΌμΉ˜ν•˜λ©΄ Queue λ°©μ‹μœΌλ‘œ popν•΄μ„œ 제거

이런 λ°©μ‹μœΌλ‘œ μˆœμ„œλŒ€λ‘œ μΉ΄λ“œ μ‚¬μš©ν•΄μ„œ μ—†μ• κ³  goal λ§ˆμ§€λ§‰ κΉŒμ§€ μΌμΉ˜ν•˜λŠ” 것을 확인해 Goal을 λ§Œλ“€μˆ˜ μžˆλŠ”μ§€ 확인

 

μ†ŒμŠ€μ½”λ“œ) 

* 1μ°¨) μ‹€νŒ¨ : 88 점

def solution(cards1, cards2, goal):
    for one in goal:
        if len(cards1) != 0 and cards1[0] == one :
            cards1.pop(0)
        elif len(cards2) != 0 and cards2[0] == one :
            cards2.pop(0)

    if len(cards1) == 0 and len(cards2) == 0 :
        return "Yes"
    else :
        return "No"

* 2μ°¨) 성곡

def solution(cards1, cards2, goal):
    for one in goal:
        if len(cards1) != 0 and cards1[0] == one :
            cards1.pop(0)
        elif len(cards2) != 0 and cards2[0] == one :
            cards2.pop(0)
        else :
            return "No"

    return "Yes"

 

리뷰) 

1μ°¨ν”Όλ“œλ°±)

μΉ΄λ“œλ₯Ό κΌ­ λ‹€ μ“Έ ν•„μš”μ—†μ΄ μˆœμ„œλŒ€λ‘œ μ›ν•˜λŠ” Goal을 λ§Œλ“€μ–΄ λ‚Όμˆ˜λ§Œ 있으면 됨

그러면 남은 μΉ΄λ“œ λ­‰μΉ˜μ˜ μ‚¬μ΄μ¦ˆκ°€ μ€‘μš”ν•˜μ§€ μ•Šμ•„μ§€κ³ , λ§Œλ“€ 수 μ—†λŠ” μˆœκ°„μ„ μ²΄ν¬ν•΄μ„œ returnν•˜λ©΄ λœλ‹€. 

Goal이 λλ‚ λ•Œ κΉŒμ§€ λ§Œλ“€μˆ˜ μ—†λŠ” μˆœκ°„μ΄ μ—†μ—ˆλ‹€λ©΄ μ „λΆ€ λ§Œλ“€ 수 μžˆλŠ” κ±°λ‹ˆ Yes!!

+ Recent posts