zagame   7년 전

1. 서류심사 성적을 기준으로 Heap sorting을 합니다.(오름차순으로) =  fGradeSort[]

2. 맨 처음 std = fGradeSort[1]로 잡아놓고, 그 다음 부터 fGradeSort[]를 N까지 돌면서 std의면접 성적(sGrade)보다 더 작다면 cnt++을 합니다. 그리고 std는 그 순간 fGradeSort[i]로 바꿔줍니다.

3. 다시 말해, 서류 심사 성적 오름차순으로 정리 후 면접심사 점수가 이전 사람보다 좋다면(=fGrade 값이 작다면) 추가 가능 하므로 cnt++ 하는 구조입니다.

맨처음엔 위와 같은 생각으로 코딩하여 맞았다고 나왔는데, 가만 생각 해보니

1 4
2 7
3 6
4 5
5 3
6 2
7 1

이와 같은 input이 있을 경우, 위 알고리즘 대로 한다면 맨처음 기준이 <1, 4> 로 잡히기 때문에 결과값은 4가 나오게 됩니다. 집합은 이렇게 구성 되겠죠..?<(1,4), (5,3), (6,2), (7,1)>

근데 생각해보면, 최대 사원 수 이므로 <(2,7), (3,6), (4,5), (5,3), (6,2), (7,1)>의 집합이 최대로써 결과값 6이 답이 아닌가요....?

yukariko   7년 전

저 <(2,7), (3,6), (4,5), (5,3), (6,2), (7,1)> 집합에서

(3, 6), (4, 5) 의 경우는 (1, 4)보다 모두 작기때문에 집합에서 빠져야합니다.

따라서 답은 4가 맞습니다.

zagame   7년 전

근데  <(2,7), (3,6), (4,5), (5,3), (6,2), (7,1)> 이 집합에는 (1,4)가 포함 되어 있지 않기 때문에, 굳이 (3,6) / (4,5)가 빠질 필요가 없는거 아닌가요...?


yukariko   7년 전

"다른 모든 지원자와 비교했을 때 서류심사 성적과 면접시험 성적 중 적어도 하나가 다른 지원자보다 떨어지지 않는 자만 선발한다는 원칙을 세웠다"

신입사원 끼리의 비교가 아니라 지원자끼리의 비교입니다. 따라서 어떻게 집합을 정했느냐는 중요하지 않습니다.


zagame   7년 전

아....! 이해했습니다. 정말 감사합니다!

hacastle   1년 전

저도 그것때문에 헤맸네요.....ㅎㅎ

댓글을 작성하려면 로그인해야 합니다.