감자주먹밥

[프로그래머스] H-Index (swift) 본문

알고리즘/프로그래머스

[프로그래머스] H-Index (swift)

JustHm 2021. 12. 18. 19:45
728x90

문제

코딩테스트 연습 - H-Index

문제 해결

먼저 H-Index 산출법을 알아야 한다.

h-index 산출 방법

  1. 발표 논문을 피인용횟수가 많은 순으로 정렬. 피인용횟수가 높은 순으로 번호를 부여.
  2. 논문의 번호(No)와 피인용횟수를 비교하여 피인용횟수가 논문의 번호(No)와 같거나 큰 번호(No)가 연구자의 h-index가 됩니다.
  3. 논문 인용 횟수를 내림차순으로 정렬한다.
  4. 배열의 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() 를 사용한 방식

Apple Developer Documentation

배열을 n과 x를 쌍 형태로 리턴해주는 메서드다.

index와 value를 return해준다.

728x90
Comments