[BOJ] 회전초밥

Minsu Han·2023년 6월 12일
0

알고리즘연습

목록 보기
100/105

코드

import sys
# from collections import deque
input = sys.stdin.readline

n, d, k, c = map(int, input().split())
q = []
ans = 0
for _ in range(n):
    q.append(int(input()))

for i in range(n):
    if i+k < n:
        temp = q[i:i+k] + [c]
    else:
        temp = q[i:n] + q[:(i+k)%n] + [c]

    l = len(set(temp))
    
    if l > ans:
        ans = l

print(ans)

결과

image


풀이 방법

  • 브루트포스로 리스트에서 추출한 [연속한 k개의 원소] + [보너스 초밥] 리스트의 set 길이(중복제거)를 확인하면 된다
  • 연속한 k개의 원소는 [start:end] 두 인덱스를 사용하여 구할 수 있는데, end < n 이면 그냥 [start:end]를 추출한다.
  • end >= n 인 경우에는 리스트를 원형 큐처럼 생각하여 [start:n] + [:(end % n)] 으로 추출하였다.

profile
기록하기

0개의 댓글