이 험난한 세상에서어어~

카드 뭉치, python 본문

algorithm/코딩 테스트

카드 뭉치, python

토끼띠NJW 2023. 6. 3. 11:10

문제 설명

카드 뭉치가 두 개 있을 때, 각 카드 뭉치에 있는 단어 카드를 차례대로 사용해서 원하는 문장을 만들 수 있는지에 관한 문제다.

https://school.programmers.co.kr/learn/courses/30/lessons/159994

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 풀이

첫 번째 접근

문제를 보자마자 일단 goal을 돌리면서 각 카드 뭉치의 인덱스 별로 해당하는 단어가 존재하는지 확인해야 한다고 생각했다.

 

내가 추가로 걱정했던 부분은 각 카드 뭉치의 인덱스에 서로 같은 단어가 존재하는 경우였다. 이럴 때는 깊이우선탐색으로 진행해서 옳지 않다면 해당 부분을 탐색하지 않고 돌아가야 하나? 싶었다. N-queen 문제 처럼 말이다. 그러나 해당 레벨이 1인 만큼 그런 테스트 케이스는 존재하지 않을 거라고 추측하고 문제를 풀었다. 확실히 그냥 통과한 걸 보면 그런 모양이다.

 

아무튼 문제 풀이로 다시 돌아가보자면 goal을 한 번씩 돌리면서 해당 카드 뭉치에 맞는 단어가 있는지 확인하면 된다. 여기서 주의할 점은 카드 뭉치의 인덱스가 범위를 벗어나는지를 먼저 확인해줘야 한다는 것이다. 해당 카드가 있는지 보다 먼저 확인해야 하는 이유는 파이썬은 위에서부터 아래로 왼쪽에서부터 오른쪽으로 코드를 읽기 때문에 먼저 써서 컴퓨터가 인식하도록 해야 함이다.

 

def solution(cards1, cards2, goal):
    answer = "Yes"
    idx1 = 0
    idx2 = 0
    
    for g in goal:
        if idx1 < len(cards1) and g == cards1[idx1]:
            idx1 += 1
        elif idx2 < len(cards2) and g == cards2[idx2]:
            idx2 += 1
        else:
            answer = "No"
            break
    
    return answer

'algorithm > 코딩 테스트' 카테고리의 다른 글

크기가 작은 부분 문자열, python  (0) 2023.06.03
가장 가까운 같은 글자, python  (0) 2023.06.03
기사단원의 무기  (0) 2023.06.02
프로그래머스, 덧칠하기(python)  (0) 2023.06.02
추억 점수  (0) 2023.06.02