https://school.programmers.co.kr/learn/courses/30/lessons/159994
약간의 그리디 느낌이 있는 문제입니다. 카드 뭉치 두개의 인덱스를 따로 관리하면서 지금 필요한 단어가 있는 뭉치를 골라주면 됩니다. 두 뭉치에 중복되는 단어가 없기 때문에 필요한 단어가 있는 카드 뭉치를 사용하는게 반드시 최선의 선택임이 보장됩니다.
flag를 사용해 최종에서 return 해주어도 되고, 불가능한 경우가 생기면 바로 "No"를 return하고 문장을 끝까지 완성한다면 "Yes"를 return 하는 식으로 구현해도 됩니다.
def solution(cards1, cards2, goal):
f, i, j = True, 0, 0
for g in goal:
if i < len(cards1) and cards1[i] == g:
i += 1
elif j < len(cards2) and cards2[j] == g:
j += 1
else:
f = False
break
return "Yes" if f else "No"
# solution 2
def solution2(cards1, cards2, goal):
i, j = 0, 0
for g in goal:
if i < len(cards1) and cards1[i] == g:
i += 1
elif j < len(cards2) and cards2[j] == g:
j += 1
else:
return "No"
return "Yes"
728x90
'🔍 알고리즘 > 프로그래머스 Python' 카테고리의 다른 글
[Python] 프로그래머스 12973. 짝지어 제거하기 (Lv.1) (0) | 2023.06.21 |
---|---|
[Python] 프로그래머스 160586. 대충 만든 자판 (Lv.1) (0) | 2023.06.20 |
[Python] 프로그래머스 155652. 둘만의 암호 (Lv.1) (0) | 2023.06.20 |
[Python] 프로그래머스 176963. 추억점수 (Lv.1) (0) | 2023.06.20 |
[Python] 프로그래머스 178871. 달리기 경주 (Lv.1) (0) | 2023.06.20 |