사용된 단어를 담는 배열(usedWords)과, 직전 단어를 (beforeWord)담을 변수를 선언
문자를 담은 배열을 순회하며 이전에 사용된 단어들과 직전 단어를 비교.
1. 첫 번째 단어일 경우 usedWords에 단어를 추가하고, beforeWord에 단어를 할당한다.
2. 현재 단어가 usedWords에 있고, 현재 단어의 첫 번째 알파벳과 직전 단어의 마지막 알파벳이 일치하지 않을 경우(끝말잇기 실패), [실패한 사람의 번호, 차례]를 담는 배열을 반환한다.
import math
def solution(n, words):
usedWords = []
beforeWord =""
index = 0
while 1:
if index==0:
usedWords.append(words[index])
beforeWord =words[index]
index = index+1
continue
elif len(words) == index:
return [0,0]
curWord = words[index]
if usedWords.count(curWord)!=0 or beforeWord[-1] !=curWord[0]:
cnt = index+1
num = n if cnt%n ==0 else cnt%n
turn = math.ceil(cnt/n)
return [num,turn]
else:
usedWords.append(curWord)
beforeWord =curWord
index = index+1
return
처음 python으로 풀어본 알고리즘이라 전체적으로 미숙했던 부분이 많았던 것 같다.
익숙해지는 과정이 필요하다.