일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DeepLearning
- affine
- FullyConnectedLayer
- 자연어처리
- sort
- SQL
- PPMI
- skip-gram
- hash
- MySQL
- dl
- algorithm
- backward
- CBOW
- Programmers
- 딥러닝
- stak
- Numpy
- 신경망
- Heap
- select
- Python
- kakao
- 파이썬
- Word2vec
- Stack
- boj
- 프로그래머스
- que
- Sigmoid
- Today
- Total
혜온의 이것저것
[코딩테스트 고득점 KIT] 정렬 H-index - Python 본문
[문제 이해 및 풀이]
h의 최대값을 뽑는 과정이기 때문에 h가 가질 수 있는 가장 큰 값인 citations의 길이 n 부터 시작했다.
리스트 안에 있는 숫자가 n보다 크거나 같으면 cnt의 값을 1씩 늘려주었다.
리스트를 한 번 돌고 나오면 n번 이상 인용된 논문의 수(cnt)가 나온다.
이때 cnt의 값이 n보다 크거나 같다면, 즉 n편 이상이라면 그 값이 H-index가 된다.
만약 cnt의 값이 n보다 작다고 한다면 n의 숫자를 1씩 줄여나가면서 가장 큰 n값을 찾는다.
이에 해당하는 값이 없다면 (n==0) 최소값인 0을 return해준다.
예제를 들어 생각하면 이해하기가 더 쉽다.
[3,1,1,4] 인 경우
n=4) 1개(4)
n=3) 2개(3,4)
n=2) 2개(3,4) -> cnt==n 이므로 return 2
----------------------------------------------
[1,1,5,7,6] 인 경우
n=5) 3개(5,6,7)
n=4) 3개(5,6,7)
n=3) 3개(5,6,7) -> cnt==n 이므로 return 3
------------------------------------------------
[0,1,1] 인 경우
n=3) 0개
n=2) 0개
n=1) 2개(1,1) -> cnt>=2 이므로 return 1
[나의 코드]
def solution(citations):
n=len(citations)
while (n>0):
cnt=0
for num in citations:
if num>=n:
cnt+=1
if cnt>=n:
break
n-=1
return n
문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42747
코딩테스트 연습 - H-Index
H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표
programmers.co.kr
'Algorithm > Programmers' 카테고리의 다른 글
[2018 KAKAO BLIND RECRUITMENT] 다트 게임 - Python (0) | 2021.12.29 |
---|---|
[코딩테스트 고득점 Kit ] 완전탐색 모의고사 - Python (0) | 2021.10.04 |
[코딩테스트 고득점 KIT] 정렬 가장 큰 수 - Python (0) | 2021.09.28 |
[코딩테스트 고득점 Kit] 정렬 K번째 수 - Python (0) | 2021.09.27 |
[코딩테스트 고득점 Kit] 힙(Heap) 이중우선순위큐 (0) | 2021.09.24 |