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