프로그래머스 연습문제
- Lv 1. 카드 뭉치 (Python)
https://school.programmers.co.kr/learn/courses/30/lessons/159994
def solution(cards1, cards2, goal):
answer = ''
# 1-0 / 2-0 / 2-1 / 1-1 / 1-2 -> O
# 1-0 / 2-0 / 2-1 / 1-2 / 1-1 -> X
i_one = 0
i_two = 0
for i in range(len(goal)):
check = False
if(goal[i] == cards1[i_one]):
i_one += 1
if (i_one == len(cards1)):
i_one -= 1
check = True
elif(goal[i] == cards2[i_two]):
i_two += 1
if(i_two == len(cards2)):
i_two -= 1
check = True
if(check == False):
answer += "No"
break
if (len(answer) == 0):
answer += "Yes"
return answer
goal
배열에 있는 값이 card1
에 있는지 검사card1
의 배열에서 인덱스를 가리키는 변수에 +1, check = True
유지card1
의 배열 길이만큼 다 돌았다면 오류 나지 않게 -1로 정지card2
에 있는지 검사 → card2
에서도 똑같이 있으면 card2
배열 인덱스 변수에 +1, check = True
유지card2
에도 없으면 check = False
로 계속 내려와서 answer
에는 No가 들어감pop
을 이용하면 훨씬 간단하게 짤 수 있었다.def solution(cards1, cards2, goal):
for g in goal:
if len(cards1) > 0 and g == cards1[0]:
cards1.pop(0)
elif len(cards2) >0 and g == cards2[0]:
cards2.pop(0)
else:
return "No"
return "Yes"
→ 오류가 나지 않게 card
배열의 길이도 같이 검사해주어야 한다.
글 잘 봤습니다, 많은 도움이 되었습니다.