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
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
https://www.acmicpc.net/problem/23322
그리디 알고리즘으로 풀었는데 보니깐 조건에서 i-k 가 기준이기 때문에 결국엔 나중에 가장 작은 값인 arr[0]를 기준으로 맞춰진다고
생각해서 풀었습니다. 문제 예제의 예시처럼 k보다 큰 i번을 먼저 뽑고 순서를 바꾸는 정공법 방식(?)으로 풀지 않았는데
제가 생각한게 맞는건지 아니면 테스트 케이스가 부족해서 정답처리가 된건지 궁금합니다. 의견 부탁드립니다.^ㅇ^/
Beta Was this translation helpful? Give feedback.
All reactions