본문 바로가기

CODING TEST/ALGORITHM - 문제

[프로그래머스/Summer/Winter Coding(~2018)] 영어 끝말잇기 - Python

코딩테스트 연습 - 영어 끝말잇기 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr

문제 요약

1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다.

  1. 1번부터 번호 순서대로 한 사람씩 차례대로 단어를 말합니다.
  2. 마지막 사람이 단어를 말한 다음에는 다시 1번부터 시작합니다.
  3. 앞사람이 말한 단어의 마지막 문자로 시작하는 단어를 말해야 합니다.
  4. 이전에 등장했던 단어는 사용할 수 없습니다.
  5. 한 글자인 단어는 인정되지 않습니다.

example )

tank → kick → know → wheel → land → dream → mother → robot → tank

 

- 매개변수

사람의 수 n

사람들이 순서대로 말한 단어 words

- return 값

가장 먼저 탈락하는 사람의 번호

그 사람이 자신의 몇 번째 차례에 탈락하는지

 

 

문제 풀이

def solution(n, words):
    used = [words[0]]
    
    for i in range(1, len(words)):
        # 한글자 단어
        if len(words[i]) == 1:
            return [i%n+1, i//n+1]
        
        # 끝말잇기 규칙
        if words[i-1][-1] != words[i][0]:
            return [i%n+1, i//n+1]
        
        else:
            # 사용된 단어 재사용
            if words[i] in used:
                return [i%n+1, i//n+1]
            else:
                used.append(words[i])

    return [0,0]