일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- UIStackView
- alamofire
- ios15
- SwiftUI_Preview_Provider
- format형식
- 백준
- Appearance변경
- ViewModifier
- ios
- kakaomap
- snapkit
- autolayout
- NotificationCenter
- Java
- segue
- UserDefaults
- Kotlin
- MapKit
- android
- image
- cocoapods
- SWIFT
- pod install
- AsyncImage
- 코딩테스트
- EventKit
- programmers
- CoreLocation
- Alert
- swiftUI
Archives
- Today
- Total
감자주먹밥
[프로그래머스] H-Index (swift) 본문
728x90
문제
문제 해결
먼저 H-Index 산출법을 알아야 한다.
h-index 산출 방법
- 발표 논문을 피인용횟수가 많은 순으로 정렬. 피인용횟수가 높은 순으로 번호를 부여.
- 논문의 번호(No)와 피인용횟수를 비교하여 피인용횟수가 논문의 번호(No)와 같거나 큰 번호(No)가 연구자의 h-index가 됩니다.
- 논문 인용 횟수를 내림차순으로 정렬한다.
- 배열의 index+1 값을 No.라고 생각하고 최초로 No.와 같거나 큰 인용횟수를 찾아 return한다.
코드
func solution(_ citations:[Int]) -> Int {
var hIndex = citations.sorted(by: >)
var answer = 0
for i in (0..<hIndex.count).reversed() {
if (i+1) <= hIndex[i] {
answer = i+1
break
}
}
return answer
}
문제 해결 중 어려웠던 것
H-Index 산출법이 뭔지 몰라 해맸지만 알고나니 너무 간단하다...
다른방식
func solution(_ citations:[Int]) -> Int {
for (index, cit) in citations.sorted(by: >).enumerated() {
if index >= cit {
return index
}
}
return citations.count
}
깔끔하게 코드를 작성한 걸 가져와 봤다. enumerated() 를 사용한 방식
배열을 n과 x를 쌍 형태로 리턴해주는 메서드다.
index와 value를 return해준다.
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 체육복 (swift) (0) | 2021.12.18 |
---|---|
[프로그래머스] 프린터 (swift) (0) | 2021.12.18 |
[프로그래머스] 기능개발 (swift) (0) | 2021.12.18 |
[프로그래머스] 가장 큰 수 (swift) (0) | 2021.12.18 |
[프로그래머스] K번째 수 (swift) (0) | 2021.12.18 |
Comments