이번 문제는 적혀있는 알고리즘을 그대로 코딩하면 풀 수 있는 문제였다.
하지만 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를 찾으면 그게 최대값이 된다.
위장(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 |
댓글 영역