문제
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 을 저렇게 활용하면 되는거였는데 생각 못했다.
댓글남기기