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

박형진·2021년 11월 7일
0

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. 후기

  1. 순서와 차례 규칙을 찾는게 생각보다 오래걸렸다. 주어진 범위가 작기 때문에 차례는 그냥 단순 반복으로 값을 찾았다.
profile
안녕하세요!

0개의 댓글

관련 채용 정보