[프로그래머스] 영어 끝말잇기Lv.2

나의 풀이

def solution(n, words):
    arr = [words[0]]
    idx = 0
    for i in range(1, len(words)):
        if words[i] in arr or words[i][0] != arr[-1][-1]:
            print(words[i])
            idx = i
            break
        arr.append(words[i])
    else:
        return [0, 0]
    first = (idx % n) + 1
    second = (idx // n) + 1

    return [first, second]
  • 리스트를 생성하여 끝말잇기의 0번째 단어를 담고, 반복은 1부터 돌려서 전의 단어와 비교하는 식으로 접근하였다.
  • 현재 단어가 리스트에 포함되어 있거나 리스트의 최근(마지막) 단어의 마지막 글자와 현재 단어의 첫 글자가 같다면 끝말잇기가 종료되기 때문에 해당 단어의 인덱스를 idx 변수에 담아주고, 반복을 종료한다.
  • 그리고 idx를 사용하여 사람의 번호와 몇 번째 턴인지 계산을 하여 리턴해준다.
  • 문제가 없다면 for else 문을 타서 [0, \0]이 리턴된다.

0개의 댓글