Algorithm (PS)

[백준] 2513 회전초밥 Python

minjiwoo 2022. 10. 10. 20:17
728x90

https://www.acmicpc.net/problem/2531

 

2531번: 회전 초밥

첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤

www.acmicpc.net

아 스시 먹고 싶다..  🍣 

배열을 두개 이어붙이는 식으로 원판을 회전하는 경우를 확인했다. 

n, d, k, c = map(int, input().split())
array = [] # 초밥
for _ in range(n):
    a = int(input())
    array.append(a)
# array 를 2배로 늘리기
array.extend(array)

max_count = 0  # 초밥 가짓수의 최댓값

for i in range(n):
    sushi = array[i:i+k] # 연속해서 초밥 먹기
    set_sushi = set(sushi)
    if c in set_sushi:
        max_count = max(len(set_sushi), max_count)
    else:
        max_count = max(max_count, len(set_sushi)+1)

print(max_count)
728x90