문제
풀이
- 입력받은 단어를 반복문으로 하나씩 순회하면서 반복문 현재 요소의 단어를 dictionary에 할당하면서 중복 단어인지 체크하였다.
- 또한 tmp라는 변수를 만들어서 이전 단어와 현재 단어가 끝말잇기가 성립하는지를 체크하였으며 위 두 가지 조건에 성립하지 않을 시, break 성립하면 [0, 0] 을 반환하도록 구현하였다
코드
def solution(n: int, words: list) -> list:
dict, tmp, answer = {}, '', []
for index, word in enumerate(words):
if not tmp:
tmp = word
dict[word] = 1
continue
if tmp[-1] != word[0] or word in dict:
answer = [index % n +1, index // n + 1]
break
dict[word] = 1
tmp = word
return answer if answer else [0, 0]
if __name__ == '__main__':
print(solution(3, ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"]))
print(solution(5, ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"]))
print(solution(2, ["hello", "one", "even", "never", "now", "world", "draw"]))
print(solution(2, ['land', 'dream', 'mom', 'mom', 'ror']))
print(solution(2, ['land', 'dream', 'mom', 'mom']))
결과
출처 & 깃허브
programmers 영어 끝말잇기
Github