문제풀이/Programmers
[Python] 프로그래머스 - 영어 끝말잇기
hbj0209
2021. 5. 16. 23:56
728x90
반응형
https://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
# 코드가 좀 정리가 안되었긴 하지만 속도를 빠르게 하기위해 dictionary를 사용했다.
# 14 ~ 16번째 케이스를 나눈 이유는 turn % n을 하면 나머지이므로 n이 3일때 0,1,2 이런식으로 나온다.
근데, 문제에서 순서는 1부터 시작해서 1,2,3 이렇게 되므로 turn % n 이 0이면 실제 순서는 n이 된다.
from collections import defaultdict
import math
def solution(n, words):
# first = 첫 단어, dic에 first 키 추가, turn(차례) = 2
answer = []
dic = defaultdict(int)
turn = 2
first = words[0]
dic[first] = 1
# word의 2번째 단어부터 반복문을 돈다.
for w in words[1:]:
# first의 마지막 글자와 현재 w의 첫번째 글자가 다르거나 w in dic(이미 사용한 단어라면)이면
if first[-1] != w[0] or w in dic:
if turn % n == 0:
answer = [n, math.ceil(turn / n)]
else:
answer = [turn % n, math.ceil(turn / n)]
break
# 제대로 끝말잇기가 되었으면 dic에 w 키 추가, first = w, turn 1 증가
else:
dic[w] = 1
first = w
turn += 1
# answer이 비어있으면 [0,0] 아니면 answer을 return 해줌
return answer if answer else [0,0]
(프로그래머스 level: 2)
728x90
반응형