본문 바로가기
코딩테스트

[파이썬] 영어 끝말잇기 - Summer/Winter Coding(~2018) [CODING TEST #53]

by ALTERww 2022. 8. 13.
320x100

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

 

 

끝말잇기가 틀린 걸 check하고, 해당 순서가 누구의 몇 번째 턴인지를 구하는 문제이다.

누가 틀렸는지는 나머지 연산 %를 이용한다. 나누어 떨어질 때를 제외하고는 모두 나눈 나머지가 그 차례가 된다.

(ex : 5 % 3 ==> 2번째 사람)

나누어 떨어질 때, 6 % 3 == 0일 때에만 n을 집어넣는다.

 

몇 번째 턴인지는 몫연산자 //를 이용한다.

n으로 나누어야 하는데, 전체 순서에서 1을 빼준 뒤 n으로 나누어야 한다.

예를 들어 n이 5일 때 6~10은 모두 같은 2번째 턴이 되는데, 10 // 5만 2가 나오기 때문이다.

따라서 (order - 1 // n) + 1 처럼, 순서에서 1을 뺀 뒤 몫을 구하고 1을 더해주었다.

 

def solution(n, words):
    answer = []
    temp = []
    for word in words:
        if len(temp) == 0: # 시작 단어
            temp.append(word)
        elif temp[-1][-1] == word[0] and word not in temp: # 이어지고 중복이 아니라면 pass
            temp.append(word)
        else: # wrong
            order = len(temp) + 1
            return [n if order % n == 0 else order % n,((order - 1) // n) + 1]
    
    return [0,0]

댓글