-
[programmers/Swift] H-IndexArchive/Questions 2022. 5. 13. 17:45728x90
programmers.co.kr - 코딩테스트연습 - Lv.2 - 정렬 - H-Index
Constraints :
- 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다.
- 논문별 인용 횟수는 0회 이상 10,000회 이하입니다.
// // Created by Yongwoo Marco on 2022/05/12. // Copyright © 2022 Yongwoo Marco Kim. All rights reserved. // func solution(_ citations:[Int]) -> Int { for (index, h) in citations.sorted(by: >).enumerated() { if index >= h { return index } } return citations.count } print(solution([3, 0, 6, 1, 5])) // 3
How I tried this :
문제를 이해하는데 시간이 오래걸렸다.
h 번 이상 인용된 논문이 h 편 이상이고 나머지 논문이 h번 이하 인용되었다면
h 의 최댓값이 이 과학자의 H-IndexH-Index는 조건에 맞는 index를 찾는 거고 h가 즉 index 로 잡고 시작해야한다.
내림차순으로 6 5 3 1 0 으로 하면 더 편하다. 다음 index는 이전 index 값보다 반드시 크지 않기 때문
index == 0, 6 0번 이상 인용된 논문이 0편(5) 이상이고 나머지 논문이 0번이하 인용 -> 5 3 1 0
index == 1, 5 1번 이상 인용된 논문이 1편(4) 이상이고 나머지 논문이 1번이하 인용 -> 3 1 0
index == 2, 3 2번 이상 인용된 논문이 2편(3) 이상이고 나머지 논문이 2번이하 인용 -> 1 0 <- 찾던 H-Index
index == 3, 1 3번 이상 인용된 논문이 3편(3) 이상이고 나머지 논문이 3번이하 인용 -> 1 0
index == 4, 0 4번 이상 인용된 논문이 4편(2) 이상이고 나머지 논문이 4번이하 인용 -> 3 1 0
index 보다 인용횟수가 많은 경우 또는 그다음 index 부터 오류가 다시 발생한다.
따라서 index >= 인용횟수 인 시점에 index 가 곧 H-Index
돌렸는데.. 1개가 딱 틀렸다..
[5, 5, 5]
index == 0, 5 0번 이상 인용된 논문이 0편(3) 이상이고 나머지 논문이 0번이하 인용 -> 5 5
index == 1, 5 1번 이상 인용된 논문이 1편(3) 이상이고 나머지 논문이 1번이하 인용 -> 5
index == 2, 5 2번 이상 인용된 논문이 2편(3) 이상이고 나머지 논문이 2번이하 인용 -> 없음
이런 형태일 경우는 for loop를 모두 돌동안 H-Index를 찾을 수 없는데,
사실 n개의 논문 모두가 h가 되는 걸로 볼 수 있다.
그래서 마지막을 n으로 하니.. 통과했다!.
문제에 관한 모든 저작권 : https://programmers.co.kr/
728x90'Archive > Questions' 카테고리의 다른 글
[programmers/Swift] 카펫 (0) 2022.05.14 [programmers/Swift] N개의 최소공배수 (0) 2022.05.13 [programmers/Swift] K번째수 (0) 2022.05.12 [programmers/Swift] 다리를 지나는 트럭 (0) 2022.05.12 [programmers/Swift] 프린터 (0) 2022.05.11