문제 출처
1. 문제설명
- 초밥의 번호가 주어진다.
- 임의의 한 위치부터
k
개의 접시를 연속해서 먹는다.
- 만약, 먹은 초밥들의 인접한 위치에 쿠폰번호가 있으면,
k+1
개를 먹을 수 있다.
- 단, 인접한 위치에 쿠폰 번호의 초밥이 있어야 한다.
2. 알고리즘 설계
- 이 문제는 슬라이딩 윈도우 문제이다.
- 초밥은 원형이므로, k가 2라면 0, n-1번째도 인접하므로 해당된다.
- 0번부터 4개씩 마지막 index까지 구현은 매우 쉽다.
- 그러면 위에 언급한 0번째와 n-1번째가 포함되어 있다면 어떻게 해야할까?
- 바로 나머지 연산이다.
- 현재 위치의 index를 n개로 나눈 나머지를 index로 취하면 된다!
3. 로직
4. 전체 코드