꼬꼬마 블로그

꼬꼬마의 기술 블로그

문제 설명

프로그래머스 레벨 2의 문제로 Summer/Winter Coding에 출제된 문제입니다.

 

 

문제가 길지만 굉장히 간단한 문제입니다. 영어 끝말잇기를 할 때 사용된 단어들이 순서대로 주어지고 n명이 진행할 때 몇번째 사람이 몇 번째 라운드에서 탈락했는지 구하는 문제입니다.

 

 

제한 사항은 간단한 내용입니다. 중복된 단어 혹은 끝말을 잇지 못한 단어를 말한 사람이 탈락하게 됩니다.

 

예를 들어 입출력 1번에 tank는 두 번 사용되어 두 번째에 tank를 말한 사람이 탈락합니다.

또한 입출력  3번에 never이라는 단어 다음 now라는 단어가 사용되었습니다. 이 또한 탈락합니다.

 

풀이

 

def solution(n, words: list):
    answer = []

    for i in range(len(words)):
        if i != 0:
            if words[i - 1][-1] != words[i][0]:
                return [i % n + 1, i // n + 1]

        if words[i] in words[:i]:
            return [i % n + 1, i // n + 1]

    return [0, 0]

 

변수 설명

i: words를 순회하는 인덱스 이자 몇번째로 사용한 단어인지 알 수 있습니다.

 

간단 설명

사용된 단어만큼 순회하며 이전 단어의 가장 마지막 글자와 현재 단어의 가장 첫 글자를 비교합니다.

만약 다르다면 [ 현재 사람의 번호, 현재 라운드 ]를 반환합니다.

 

만약 이전까지 사용된 단어들 중 현재 단어가 포함되어있다면 마찬가지로 [ 현재 사람의 번호, 현재 라운드 ]를 반환합니다.

 

탈락자가 없이 끝났다면 [ 0, 0 ]을 반환합니다.

 

아마 어렵지 않은 문제라 코드로 옮기는 부분만 확인하면 쉽게 풀 수 있는 문제였습니다.