문제 링크입니다: https://www.acmicpc.net/problem/2531
2531번: 회전 초밥
첫 번째 줄에는 회전 초밥 벨트에 놓인 접시의 수 N, 초밥의 가짓수 d, 연속해서 먹는 접시의 수 k, 쿠폰 번호 c가 각각 하나의 빈 칸을 사이에 두고 주어진다. 단, 2 ≤ N ≤ 30,000, 2 ≤ d ≤ 3,000, 2 ≤ k ≤ 3,000 (k ≤ N), 1 ≤ c ≤ d이다. 두 번째 줄부터 N개의 줄에는 벨트의 한 위치부터 시작하여 회전 방향을 따라갈 때 초밥의 종류를 나타내는 1 이상 d 이하의 정수가 각 줄마다 하나씩 주어진다.
www.acmicpc.net
모듈러 연산을 잘 사용해야 하는 문제였습니다.
i = 0부터 탐색을 진행하기 때문에 0 이전 즉, (N - k) ~ (N - 1) 인덱스 내의 초밥의 종류 개수부터 구했습니다.(빨간 박스 참고)
이후부터는 (N - k) 번째에 속한 스시의 종류 개수를 1 감소하고 0 번째에 속한 초밥의 종류 개수를 1 증가시키며 result를 갱신했습니다.
또한, 쿠폰에 속한 스시의 종류가 현재 구한 체인 내에 없을 경우 더해줘야 합니다!
개발환경:Visual Studio 2017
지적, 조언, 질문 환영입니다! 댓글 남겨주세요~
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
백준 17825번 주사위 윷놀이 (0) | 2020.04.30 |
---|---|
백준 2456번 나는 학급회장이다 (0) | 2020.04.26 |
백준 2530번 인공지능 시계 (0) | 2020.04.26 |
백준 2526번 싸이클 (0) | 2020.04.26 |
백준 14916번 거스름돈 (0) | 2020.04.24 |