본문 바로가기
알고리즘

[백준/파이썬] #15961

by 룰루루 2025. 3. 29.

30분 동안 시도했던 풀이는 다음과 같다. 테스트 케이스는 맞았는데 제출하니 틀렸다고 뜨더라. 예외 케이스가 처리되지 않은 것 같다. 

import sys
from collections import defaultdict

input = sys.stdin.readline

N, d, k, c = map(int, input().split())
sushi_arr = []
for _ in range(N):
    element = int(input())
    sushi_arr.append(element)

sushi = defaultdict(lambda: 0)
sushi_count = 0
for i in range(k):
    current_sushi = sushi_arr[i]
    if sushi[current_sushi] == 0:
        sushi_count += 1
    sushi[current_sushi] += 1

if sushi[c] == 0:
    sushi_count += 1
max_sushi_count = sushi_count

for left in range(1, N):
    popped_sushi = sushi_arr[left-1]
    added_sushi = sushi_arr[(left+k-1)%N]

    sushi[popped_sushi] -= 1
    if sushi[popped_sushi] == 0:
        sushi_count -= 1

    sushi[added_sushi] += 1
    if sushi[added_sushi] == 1:
        sushi_count += 1

    sushi[c] += 1
    if sushi[c] == 1:
        sushi_count += 1

    max_sushi_count = max(sushi_count, max_sushi_count)

print(max_sushi_count)

 

1년 전에 이 문제를 맞춘 기록이 있길래 참고해봤다. 전반적인 풀이 방법은 위랑 비슷했는데, 다만 c(서비스로 주어지는 초밥)의 값을 1로 세팅해 두는 것이 차이였다. 

 

나의 경우는 for문 안에서 이 c의 경우를 처리하려다 보니 로직이 더 복잡했고, 그래서 일부 케이스에서 오류가 나지 않았을까 추측해 본다. 

import sys
from collections import defaultdict

input = sys.stdin.readline

N, d, k, c = map(int, input().split())
sushi_arr = []
for _ in range(N):
    element = int(input())
    sushi_arr.append(element)

sushi = defaultdict(lambda: 0)
sushi[c] = 1
sushi_count = 1
for i in range(k):
    current_sushi = sushi_arr[i]
    if sushi[current_sushi] == 0:
        sushi_count += 1
    sushi[current_sushi] += 1

max_sushi_count = sushi_count


for left in range(1, N):
    popped_sushi = sushi_arr[left-1]
    added_sushi = sushi_arr[(left+k-1)%N]

    sushi[popped_sushi] -= 1
    if sushi[popped_sushi] == 0:
        sushi_count -= 1

    sushi[added_sushi] += 1
    if sushi[added_sushi] == 1:
        sushi_count += 1

    max_sushi_count = max(sushi_count, max_sushi_count)

print(max_sushi_count)

 

'알고리즘' 카테고리의 다른 글

[백준/파이썬] #13549  (0) 2025.04.01
[백준/파이썬] #22945  (0) 2025.03.31
[백준/파이썬] #1806  (0) 2025.03.28
[백준/파이썬] #22862  (0) 2025.03.27
[백준/파이썬&자바] #2470  (0) 2025.03.26