1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 영어 끝말잇기는 다음과 같은 규칙으로 진행됩니다.
tank → kick → know → wheel → land → dream → mother → robot → tank
위 끝말잇기는 다음과 같이 진행됩니다.
tank
라는 단어는 이전에 등장했던 단어이므로 탈락하게 됩니다.사람의 수 n과 사람들이 순서대로 말한 단어 words 가 매개변수로 주어질 때, 가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락하는지를 구해서 return 하도록 solution 함수를 완성해주세요.
words
는 끝말잇기에 사용한 단어들이 순서대로 들어있는 배열이며, 길이는 n 이상 100 이하입니다.[ 번호, 차례 ]
형태로 return 해주세요.[0, 0]
을 return 해주세요.tries
dictionary에 기록하고, said_words
에 기록한다.words
배열의 모든 단어를 말함으로 끝말잇기가 끝나게 되면, 즉 for문이 정상적으로 마무리 되면 탈락자가 생기지 않는다는 뜻이므로 [0,0]
을 리턴한다.from collections import defaultdict
def solution(n, words):
tries=defaultdict(int)
prev=words[0]
tries[0]=1
said_words=[prev]
for i in range(1, len(words)):
print(words[i])
# 차례
tries[i%n]+=1
# 끝말잇기 조건
if words[i][0]!=prev[-1]:
return [i%n+1, tries[i%n]]
# 이전 등장 단어인지
elif words[i] in said_words:
return [i%n+1, tries[i%n]]
# 한글자 단어인지
elif len(words[i])==1:
return [i%n+1, tries[i%n]]
prev=words[i]
said_words.append(prev)
return [0,0]
https://school.programmers.co.kr/learn/courses/30/lessons/12981