[Python] 프로그래머스 - 영어 끝말잇기
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/12981
# 코드가 좀 정리가 안되었긴 하지만 속도를 빠르게 하기위해 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
반응형
'문제풀이 > Programmers' 카테고리의 다른 글
[Python] 프로그래머스 - 압축 (0) | 2021.05.21 |
---|---|
[Python] 프로그래머스 - 방금그곡 (0) | 2021.05.20 |
[Python] 프로그래머스 - 예상 대진표 (0) | 2021.05.16 |
[Python] 프로그래머스 - 괄호 회전하기 (0) | 2021.05.15 |
[Python] 프로그래머스 - 네트워크 (0) | 2021.05.13 |
TAGS.