[알고리즘] 백준 - 회전 초밥

June·2021년 8월 23일
0

알고리즘

목록 보기
242/260

백준 - 회전 초밥

다른 사람 풀이

from collections import defaultdict

N, d, k, coupon = map(int, input().split()) # 접시의 수 N,초밥의 가짓수 d, 연속 k, 쿠폰 c
arr = [int(input()) for _ in range(N)]
arr.extend(arr)

left, right = 0, 0
sushi_dict = defaultdict(int)
result = 0

sushi_dict[coupon] += 1

while right < k:
    sushi_dict[arr[right]] += 1
    right += 1

while right < len(arr):
    result = max(result, len(sushi_dict))

    sushi_dict[arr[left]] -= 1
    if sushi_dict[arr[left]] == 0:
        del sushi_dict[arr[left]]

    sushi_dict[arr[right]] += 1
    left += 1
    right += 1

print(result)

문제를 잘 못 이해하여 풀지 못했다. 현재 선택한 것에서 무료 초밥이 없으면 쿠폰으로 달라할 수 있고, 그냥 쿠폰 초밥은 무조건 더해져있다 생각하면된다.

0개의 댓글