[프로그래머스/파이썬] Level 2 영어 끝말잇기

bye9·2021년 4월 20일
0

알고리즘(코테)

목록 보기
117/130

https://programmers.co.kr/learn/courses/30/lessons/12981


문제풀이

크게 두 가지의 조건을 생각해야한다.
1. 끝말잇기 규칙을 성립해야한다. (never->now는 X)
2. 나왔던 단어가 또 나오면 안된다. (tank 2번)

입출력 예시에서 힌트를 얻어 각 사람마다 딕셔너리로 구분지어주었다.
하나씩 차례대로 단어를 넣다가 규칙을 성립하지 않거나 이미 나왔던 단어이면 해당 단어의 [번호,차례]를 리턴한다.

ex)
...
{1: ['tank', 'wheel', 'mother'], 2: ['kick', 'land', 'robot'], 3: ['know', 'dream']}

소스코드

def solution(n, words):
    people={i:[] for i in range(1,n+1)}
    visited=[words[0]]
    
    people[1].append(words[0])
    for i in range(1,len(words)):
        if words[i-1][-1]==words[i][0] and words[i] not in visited:
            people[i%n+1].append(words[i])
            visited.append(words[i])
            #print(people)
        else:
            return [i%n+1,i//n+1]
    
    return [0,0]

0개의 댓글