알고리즘 풀이/프로그래머스

[Level 2] 영어 끝말잇기

mhko411 2021. 3. 22. 22:03
728x90

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

 

코딩테스트 연습 - 영어 끝말잇기

3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3] 5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0]

programmers.co.kr


접근

끝말잇기를 하면서 탈락하는 조건을 그대로 구현을 하였다.

이 문제에서는 탈락한 사람과 탈락한 라운드를 출력해야한다. 따라서 1번 인덱스부터 끝말잇기를 진행하여 탈락자가 발생한 시점의 인덱스를 활용하여 탈락한 사람과 라운드를 구했다.

 

구현

먼저 이전에 말한 단어를 담는 past_words라는 리스트를 선언하였고 조건에 맞게 영단어를 말했을 때 이 리스트에 담는다.

그리고 1번 인덱스부터 탐색을 진행하여 영단어가 1글자이거나 이전에 말했을 때, 그리고 이전의 영단어와 끝말잇기가 안될 때는 종료를 시켰다.

먼저 탈락자는 종료되는 시점의 인덱스를 n으로 나누고 +1로 계산하였으며 라운드는 탈락된 인덱스를 n으로 나누고 +1을 하였다.

 

단순히 인덱스 처리만 해주면 되는 문제였다.

처음에는 n명의 사람들이 말한 것을 각각 담으려고 했다.

def solution(n, words):
    answer = []
    past_words = []
    past_words.append(words[0])
    for i in range(1, len(words)):
        if len(words[i]) == 1 or words[i] in past_words:
            answer.append((i%n)+1)
            answer.append(i//n+1)
            break
        if words[i-1][-1] != words[i][0]:
            answer.append((i%n)+1)
            answer.append(i//n+1)
            break
        past_words.append(words[i])
    else:
        answer = [0, 0]

    return answer

'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글

[Level 2] 점프와 순간이동  (0) 2021.03.23
[Level 2] 124 나라의 숫자  (0) 2021.03.22
[Level 2] 스킬트리  (0) 2021.03.22
[Level 3] 거스름돈  (0) 2021.03.17
[Level 2] 조이스틱  (0) 2021.03.16