https://programmers.co.kr/learn/courses/30/lessons/12981
1. 전체 코드
from collections import defaultdict
def solution(n, words):
answer = []
d = defaultdict(int)
d[words[0]] += 1
flag = False
# 2번째 단어부터 검색하여 틀린 단어의 위치 find 저장
# ex) ['ab', 'bc', 'bc'] 라면, find = 3
for idx in range(1, len(words)):
if words[idx][0] != words[idx - 1][-1]:
flag = True
find = idx + 1
break
d[words[idx]] += 1
if d[words[idx]] == 2:
flag = True
find = idx + 1
break
# 문제 없으므로 [0, 0] 리턴
if not flag:
return [0, 0]
# 번호
person = find % n
# 0번째 사람 = 마지막 사람
if person == 0:
person = n
# 차례
start = person - 1
turn = 1
while True:
if words[find - 1] == words[start]:
break
start += n
turn += 1
return [person, turn]
N = 3
w = ["tank", "kick", "know", "wheel",
"land", "dream", "mother", "robot", "tank"]
solution(N, w)
2. 후기
- 순서와 차례 규칙을 찾는게 생각보다 오래걸렸다. 주어진 범위가 작기 때문에 차례는 그냥 단순 반복으로 값을 찾았다.