프로그래머스 LV1 - 카드 뭉치
내 풀이
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을 활용하는 사고
댓글남기기