Coding Test/programmers

[프로그래머스] 영어 끝말잇기

Karla Ko 2023. 8. 10. 16:05
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/12981

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

분석

사람의 수 n과 사람들이 순서대로 말한 단어 words 가 매개변수로 주어질 때,
가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락하는지를 구해서 return
  • 사용 단어 목록에 있거나, 끝말이 안맞을 때
  • [탈락자 번호, 자신의 몇번째 차례] = [ 단어 순서 ÷ 전체 단어 나머지 + 1,  단어 순서 ÷ 전체 단어 + 1] = [(p%n)+1, (p//n)+1]

 

풀이

from collections import deque
import math
def solution(n, words):
    answer = []

    q=deque()
    
    for i,x in enumerate(words):
        q.append(((i%n)+1,x))

    cnt=0
    d=set()
    pre=''
    while q:
        cnt+=1
        i,x = q.popleft()
        if pre!='' and pre[-1]!=x[0]:
            return [i, math.ceil(cnt/n)]
        if x in d:
            return [i, math.ceil(cnt/n)]
        else:
            d.add(x)
            pre=x
    return [0,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]
728x90