문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/159994
소스 코드
def solution(cards1, cards2, goal):
for word in goal:
# 카드 뭉치 둘 다 남은 경우
if cards1 and cards2:
word1,word2 = cards1[0],cards2[0]
if word == word1: cards1.pop(0)
elif word == word2: cards2.pop(0)
else: return 'No'
# 1번 뭉치만 남은 경우
elif cards1 and not cards2:
word1 = cards1[0]
if word == word1: cards1.pop(0)
else: return 'No'
# 2번 뭉치만 남은 경우
elif not cards1 and cards2:
word2 = cards2[0]
if word == word2: cards2.pop(0)
else: return 'No'
# 카드 뭉치가 바닥난 경우
else:
return 'No'
return 'Yes'
해설
- 문자열, 구현
문제 상황에서 나올 수 있는 조건을 다 따져서 조건에 맞게 'Yes', 'No'를 return하면 되는 문제였습니다.
사실 'No'를 return하는 것이 여러 번 반복되고 있기 때문에 좀 더 깔끔하게 조건을 정리하는게 좋을텐데 어려운 문제는 아니라서 그냥 생각나는대로 코드를 작성했더니 깔끔하지는 않네요 🥲
논리만 간단히 정리하면 '두 카드 뭉치 중 첫 번째의 단어가 goal에서 확인하는 단어와 동일한지'를 확인하는 것입니다.
남아있는 두 카드 뭉치의 첫 단어 중 어떤 것도 goal에서 확인하는 단어와 동일하지 않다면 goal을 구성할 수 없겠죠.
이를 위해서 카드 뭉치들의 첫 단어를 확인해야 하는데 이때 리스트에 인덱스로 접근하므로 리스트에 원소가 들어있는지 확인하는 조건이 필요합니다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 대충 만든 자판 (Python) (0) | 2023.02.26 |
---|---|
[프로그래머스] 둘만의 암호 (Python) (0) | 2023.02.24 |
[프로그래머스] 크기가 작은 부분문자열 (Python) (0) | 2023.02.22 |
[프로그래머스] 가장 가까운 같은 글자 (Python) (0) | 2023.02.21 |
[프로그래머스] 문자열 나누기 (Python) (0) | 2023.02.20 |