https://school.programmers.co.kr/learn/courses/30/lessons/159994
def solution(cards1, cards2, goal):
for target in goal:
if target == cards1[0]: cards1.pop(0)
elif target == cards2[0]: cards2.pop(0)
else: return 'No'
return 'Yes'
예를 들어 아래와 같이 배열이 주어졌다고 가정한다.
cards1 = ["i", "drink", "water"]
cards2 = []
goal = ["i", "want", "to", "drink", "water"]
target = "i"때 len(cards2)가 0인 상태(비어있음)에서 elif 문으로 진입한다. 하지만, cards2[0]에 접근하려고 할 때 IndexError가 발생한다. 왜냐하면 빈 리스트인 cards2에서는 가져올 단어가 없기 때문이다. 결과적으로 elif 문은 실행되지 않고, cards1을 확인해 "i"를 찾을 수 없으므로 "No"를 반환하고 함수가 종료된다.
따라서 cards2가 비어있는 상태에서 인덱스 접근을 시도하면 IndexError가 발생하므로, len(cards2)를 확인하여 이러한 상황을 방지하는 것이다. 따라서 len(cards2)를 확인함으로써 문제가 발생하지 않도록 처리하는 것이 중요하다.
def solution(cards1, cards2, goal):
for target in goal:
if len(cards1) and target == cards1[0]: cards1.pop(0)
elif len(cards1) and target == cards2[0]: cards2.pop(0)
else: return 'No'
return 'Yes'