프로그래머스 영어 끝말잇기 코드 및 해설 (파이썬)

2021. 4. 26. 15:04algorithm

반응형

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

 

💡 index를 n으로 나눈 몫과 나머지를 활용했습니다. 

 

주어진 words를 for 문으로 하나씩 보면서,
끝말잇기가 실패하는 3가지 경우, 

(1) 끝말이 이어지지 않는 경우 (2) 한 글자인 단어를 말하는 경우 (3) 이전에 등장한 단어를 사용하는 경우에 해당하면 [번호, 차례]를 반환하도록 했습니다.
번호는 현재 index를 사람의 수인 n으로 나눈 나머지에 +1을 한 값, 차례는 현재 index를 n으로 나눈 몫에 + 1 을 한 값입니다.
모든 words를 돌아도 끝말잇기가 실패하지 않으면 [0,0]을 반환하도록 했습니다.

 

def solution(n, words):

    for i in range(1, len(words)):
        # (1) 끝말이 이어지지 않는 경우 (2) 한글자인 단어를 말하는 경우 (3) 이전에 등장한 단어를 사용하는 경우 -> 끝말잇기 실패 
        if words[i][0] != words[i-1][-1] or len(words[i]) == 1 or words[i] in words[:i]:    
            # 번호: i를 n으로 나눈 나머지 +1 
            # 차례: i를 n으로 나눈 몫 + 1 
            return [i%n+1, i//n+1]

    return [0,0]

 

반응형