Trip to Cote

카드 뭉치 - Python3 (난 뭘 놓쳤나?)

Kestrel 2023. 3. 16. 22:36

3월은 알고리즘, 자료구조를 공부하고 문제풀이를 시작을 계획했다. 물론 타이슨의 명언처럼 나도 코딩 공부를 시작하며 그럴싸한 계획을 가지고 있었지만 역시 쳐맞아보니 계획은 변경되고 뜻처럼 안되는 부분도 많았다. 여튼 이제 시작하는데 역시나 쉽지 않았다. 입문 수준의 문제를 푸는데도 참 어려웠다. 4월에 프로그래머스 부트캠프가 있는데 프로그래머스 1~2단계 수준의 코테가 있다고 한다. 짧은 기간에 준비해서 해야하는데 첫 문제부터 그리고 입문 문제부터 멍하니 문제만 바라보게 되니 막막했다. 그래도 이전처럼 차근차근 해내가야겠다.

 

카드 뭉치 문제를 풀었는데 그래도 짧지만 코드를 써서 다행이라고 생각했는데 왜 틀렸는지 감을 전혀 못잡았다. 컴공과 후배가 1시간이상 생각했는데 답 안나오면 다른 사람 답보고 이해하면서 넘어가라고 해서 답을 봤더니 답을 봐도 이해가 안되었다. 

 

def solution(cards1, cards2, goal):
    i, j = 0, 0
    for word in goal:
        if word == cards1[i]:
            i += 1
        elif word == cards2[j]:
            j += 1
        else:
            return "No"         
    return "Yes"

 

 처음 이렇게 코드를 썼는데 분명 이러면 맞을 것 같았는데 한 가지 간과한 사실이 있었다. 주어진 카드 뭉치가 없을 수도 있다는 것이라 만약 cards1 리스트의 길이가 1이고 첫번째 if에서 카드가 뽑혔다면 나의 코드에서는 인덱스를 통해서 단어 판별이 불가능하다. 이점을 간과하고 분명 카드 단어들이 하나씩 비교하면 되는건데 왜 안된다고 하는거지를 속으로 생각하고 있었다. 

 

def solution(cards1, cards2, goal):
    i, j = 0, 0
    for word in goal:
        if i < len(cards1) and word == cards1[i]:
            i += 1
        elif j < len(cards2) and word == cards2[j]:
            j += 1
        else:
            return "No"         
    return "Yes"

길이를 통해서 리스트가 존재하는지 여부를 같이 확인했어야했다. 그럼 계속 풀어나가보겠다.