Search
Duplicate

회전 초밥

주차
17
문제번호
2531
언어
Python
티어
실버
유형
투 포인터
nj_Blog
nj_상태
이해도
풀이
사람
이해도 2
13 more properties

Memo

어려웠던 부분

right를 증가시키는 시점과 left를 증가시키는 지점을 정하기가 어려웠습니다.
회전 테이블이라는 것을 간과했습니다. 테이블 길이를 2배로 늘려서 해결했습니다.

Code

제출 날짜

@4/22/2021
import sys N, d, k, c = map(int, sys.stdin.readline().split()) belt = [] sushi = dict() for _ in range(N): a = int(sys.stdin.readline()) belt.append(a) for i in range(N): belt.append(belt[i]) left = 0 right = k - 2 for i in range(right + 1): if (belt[i] in sushi): sushi[belt[i]] += 1 else: sushi[belt[i]] = 1 ans = 0 while (right < 2 * N - 1): right += 1 if (belt[right] in sushi): sushi[belt[right]] += 1 else: sushi[belt[right]] = 1 if (len(sushi) >= ans): if (c in sushi): ans = len(sushi) else: ans = len(sushi) + 1 sushi[belt[left]] -= 1 if (not sushi[belt[left]]): del sushi[belt[left]] left += 1 print(ans)
Python
복사