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]
'코딩테스트' 카테고리의 다른 글
[파이썬] JadenCase 문자열 만들기 [CODING TEST #56] (0) | 2022.08.17 |
---|---|
[파이썬] 더 맵게 - 힙(Heap) [CODING TEST #54] (0) | 2022.08.16 |
[파이썬] 최댓값과 최솟값 [CODING TEST #52] (0) | 2022.08.12 |
[파이썬] 게임 맵 최단거리 [CODING TEST #51] (0) | 2022.08.11 |
[파이썬] 올바른 괄호 [CODING TEST #50] (0) | 2022.08.11 |
댓글