로직을 정확히 이해한 것인진 모르겠지만, 다음과 같은 입력에서
4 3
1 2 4 4
3 3 3
이 코드는 4를 출력하는데, 정답은 3입니다. 이 코드에서는 아마도 앞의 셋끼리 짝을 지을 것 같은데, 세번째 여자는 세번째 남자와 짝을 짓나 네번째 남자와 짝을 짓나 그 자체로는 차이가 없지만, 그 때의 선택으로 인해 두번째와 첫번째 여자가 할 수 있는 선택에 제한을 두게 됩니다.
좀 더 극단적으로는 다음과 같은 예를 들 수 있습니다.
3 2
1 99 100
98 99
dladydwo123 5년 전
남자성격과 여자 성격을 오름차순으로 정렬한 후, 동일한 인덱스에 해당하는 남자성격과 여자성격의 차이를 info에 담고, table에는 어떤 남자와의 성격차이 값인지를 담았습니다. 이후에는 탐욕법을 적용했는데, 논리는 다음과 같습니다.
1. 수가 부족한 성별을 정합니다.
2. 짝지어진 커플(info)중 뒤부터, 커플이 아닌 사람과의 성격차이를 구하여, 제일 작은 값을 찾습니다.
3. 이를 0번 인덱스에 도달할 때 까지 계속합니다.
이해를 돕고자 그림으로 나타내 보면
<초기>
1번 남자 2번 남자 3번 남자 4번 남자 5번 남자.
1번 여자 2번 여자 3번 여자
<진행 중>
1번 남자 2번 남자 3번 남자 4번 남자 5번 남자
1번 여지 2번 여자 3번 여자 //3번 여자가 5번 남자와 커플이 되었을 때 성격차이 값이 줄어들었음.
<진행 중 2>
1번 남자 2번 남자 3번 남자 4번 남자 5번 남자.
1번 여자 2번 여자 3번 여자 //2번 여자가 3번 남자와 커플이 되었을 때 성격차이 값이 줄어들었음.
이런 식으로 작성했습니다. 해당 방식으로 작성 후 제출했는데 틀렸습니다가 나옵니다. 혹시 제가 세운 논리에 논리적 헛점이 있는지 알고싶습니다.
도와주시길 부탁그립니다. (_ _).