상세 컨텐츠

본문 제목

H-Index(2레벨)

코딩테스트

by dofury 2023. 1. 21. 18:47

본문

728x90

이번 문제는 적혀있는 알고리즘을 그대로 코딩하면 풀 수 있는 문제였다.

하지만 n편중,h번이상 인용된 논문이 h편이상이고 나머지 논문이 h번 이하 

이 문장을 이해하는데 조금 시간을 먹었던 문제였 던 것 같다.

이해하고나니 코딩하는데 오래걸리진 않았다.

 

class Solution {
    fun solution(citations: IntArray): Int {
        var answer = 0
        var h = 0
        var length = citations.size
        var max = 0
        for(i in citations)
        {
            if(i > max)
                max = i
        }
        print(max)
        for(i in max downTo 1)
        {
            for(cit in citations)
            {
                if(i<=cit)
                {
                    h++
                }
            }
            if(h>=i&&h>=length-h)
            {
                answer = i
                break
            }
            h = 0
        }
        
        return answer
    }
}

 

해설

반복문을 돌려 citations 배열안에서 제일 높은 수를 찾는다.
이 수를 기준으로 감소 시켜 위 조건을 성립하는 가장 큰수가 최댓값이 된다.
조건을 검사하기 위해
i번 이상 인용된 논문의 갯수 h 를 구한다.
이 갯수가  h번 이상 인용된 논문 h번 이상이니
h가 i이상일때, 
나머지 논문이 h번 이하 이기 때문에
length-h 가 h이하일때 두조건이 성립되는 h를 찾으면 그게 최대값이 된다.
728x90

'코딩테스트' 카테고리의 다른 글

위장(2레벨)  (2) 2023.01.25
괄호 회전하기(2레벨)  (0) 2023.01.24
멀리뛰기(2레벨)  (0) 2023.01.21
예상 대진표(2레벨)  (0) 2023.01.20
N개의 최소공배수(2레벨)  (0) 2023.01.15

관련글 더보기

댓글 영역