Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

우주에서 글을 적어본다

99클럽 코테 스터디 11일차 TIL + 구현 본문

항해99 TIL

99클럽 코테 스터디 11일차 TIL + 구현

우주로 날아간 사람 2024. 8. 1. 14:24

[오늘의 학습 키워드 및 문제]
- 프로그래머스의 "카드 뭉치" 문제를 풀었다.
- 주제가 정렬이어서 정렬 문제인 줄 알았는데 단순 구현이어서 당황했다.
- 문제 접근법을 떠오르는 법은 어렵지 않았다.

[나의 코드]

def solution(cards1, cards2, goal):
    answer = 'Yes'
    
    for word in goal:
    	# word == cards1[0] and cards1 이렇게 작성하면 index 오류가 난다.
        # word == cards1[0] 얘를 먼저 검사하기 때문에 오류날 수 있다.
        # 할 거면 우선 조건을 앞으로 빼오자.
        if cards1 and word == cards1[0]:
            cards1.pop(0)
        elif cards2 and word == cards2[0]:
            cards2.pop(0)
        else:
            answer = 'No'
            break

    return answer

각 배열의 순서를 바꿀 수 없는 게 가장 큰 조건이지 않을까 싶다.
그래서 cards1과 cards2 맨 앞의 원소를 고정값으로 두고 풀면 되겠다 생각했다.
앞서 말했듯이 접근 자체는 어렵지 않았다. 하나 실수한 게 있는데...

'2 ≤ goal의 길이 ≤ cards1의 길이 + cards2의 길이' 이 조건을 간과했다.
각 배열마다 길이가 다 다르다.
그래서 늘 배열이 비어있는지 차있는지 확인도 해줘야 했던 것이다. (두둥탁)
이것만 고쳐줬더니 바로 잘 돌아간다. (안 고쳐준다면 out of index 잔치~)

[오늘의 회고]
- 배열의 길이를 늘 신경 쓰도록 하자.
- 참고로 deque를 쓸 수 있다. 있는데 조건을 보면 어차피 배열이 짧아서 안 써도 시간 초과 안 난다. 끝!