Replies: 1 comment 3 replies
-
이 그리디 알고리즘이 가능한 이유는 첫째는 문제에서 처음 주어진 초콜릿 통에 담긴 초콜릿의 개수가 오름차순으로 주어졌고, 두번째는 최대한 많이 빠른시간내에 먹으려하기 때문에 가능한 것 같습니다. 두번째 조건을 만족시키기 위해서는 가장 작은 숫자인 첫번째 인덱스와 K만큼 떨어진 인덱스를 똑같이 만들고 만약 K번째 인덱스가 첫번째 인덱스와 같다면, K+1번째 인덱스와 2번째 인덱스를 이것도 같다면, K+2번째와 3번째 인덱스를 같게 만들어 나가면 됩니다. 처음에 통에 담긴 초콜릿 개수가 모두 다른 숫자라는 가정 하에, K-1번 정도 K번째 숫자와 첫번째 숫자를 동일하게 만들고, 오름차순으로 정렬하게되면, K번째 인덱스는 첫번째 인덱스 수와 같아집니다. K<i, i-K번째 통과 같게 만든 후에, 다시 오름차순으로 정렬하기 때문에, 만약 K번째 인덱스가 첫번째 인덱스와 같다면 1~K 인덱스까지 모든 숫자가 동일하다는 사실을 알 수 있습니다. 이 시점부터, K+1, K+2,K+3번째 숫자를 각각 2,3,4번째 수와 동일하게 만들어가게되고 위 그리디 알고리즘이 맞다는 사실을 밝혀낼 수 있습니다. |
Beta Was this translation helpful? Give feedback.
3 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
https://www.acmicpc.net/problem/23322
그리디 알고리즘으로 풀었는데 보니깐 조건에서 i-k 가 기준이기 때문에 결국엔 나중에 가장 작은 값인 arr[0]를 기준으로 맞춰진다고
생각해서 풀었습니다. 문제 예제의 예시처럼 k보다 큰 i번을 먼저 뽑고 순서를 바꾸는 정공법 방식(?)으로 풀지 않았는데
제가 생각한게 맞는건지 아니면 테스트 케이스가 부족해서 정답처리가 된건지 궁금합니다. 의견 부탁드립니다.^ㅇ^/
Beta Was this translation helpful? Give feedback.
All reactions