본문 바로가기

코딩테스트/Python

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

내 코드

def solution(n, words):
    s = []
    
    for i,wd in enumerate(words):
        if i==0:
            s.append(wd)
            continue
        elif wd not in s and s[-1][len(s[-1])-1] == wd[0]:
            s.append(wd)
        else:
            return [i%n+1,i//n+1]
                
    return [0,0]

탈락하지 않은 단어는 s에 차례대로 넣는 방식으로 풀었다.

현재 단어가 s에 포함되어있지않고 s의 가장 마지막 단어의 끝자리와 s의 첫자리가 같으면 통과이므로 s에 넣는다. 만약 아니면 탈락이므로 답을 return 한다. 끝까지 돌아도 탈락자가 생기지 않으면 [0,0]을 return 한다.

 

다른사람 코드

def solution(n, words):
    for p in range(1, len(words)):
        if words[p][0] != words[p-1][-1] or words[p] in words[:p]: return [(p%n)+1, (p//n)+1]
    else:
        return [0,0]

다른 list를 만들지 않고 코드를 짠것이다. 나와 비슷함!