문제

https://programmers.co.kr/learn/courses/30/lessons/12981?language=python3

풀이

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

앞 단어의 마지막 글자와 뒤 단어의 앞 글자 규칙은
리스트 인덱스의 -1, 0을 통해 비교했고
이미 거론된 단어를 구별하는 것은 딕셔너리 자료형을 이용했는데
굳이 딕셔너리 자료형 없이도 그냥 리스트에 추가시켜도 되었을 것 같다.

더 나은 풀이

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]

우씨… in 을 저렇게 활용하면 되는거였는데 생각 못했다.

댓글남기기