Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- opic
- 디피
- dp
- 주석
- 오픽가격
- 오픽공부법
- 오픽노잼
- 오픽
- 안드로이드
- 피보나치수열
- 탑다운
- fibo
- 오픽점수잘받는방법
- topdown
- 메모이제이션
- XML주석
- 안드로이드주석
- 이진탐색
- 다이나믹프로그래밍
- 영어말하기
- ㅂ
- stack 스택
- 영어회화
- English
- XML
- 이진탐색 #나무 자르기
- 오픽노잼공부방법
- 바텀업
- dynamicProgramming
Archives
RUBY
[프로그래머스] H-Index 본문
출처:: programmers.co.kr/learn/courses/30/lessons/42747#
분류:: 정렬
1. 문제 이해 및 해결과정
1) 이분탐색
- 이분탐색으로 풀이하였다. - 테스트케이스 16에서 실패했었는데, [0,1,1] 1 을 고치니 해결이 되었다 -> hindex함수에서 index의 초기값때문에 if len(citations)-index>=mid 가 참이 나올 수 있는 경우 때문이였다. 초기 index를 10000으로 설정해주어서 해결 - ex) [3 0 6 1 5] -> (정렬) [ 0 1 3 5 6 ] -> len=5 이므로 mid가 2부터 시작 , 3>=2 이므로, index=2 이고, 5-2 >= 2 이므로 ,True s+e = 3+5 //2 = 4, mid=4, 5>=4 이므로, index=3이고, 5-3>=4이 성립하지 않으므로 False, e= 3 s+e = 3+3 //2 = 3 , mid = 3 , 3>=3 이므로, index = 2 이고, 5-2>=3 성립하므로, True , res = 3 |
2) 정렬
- 굳이 이분탐색으로 풀지 않고 , 논문의 인용횟수가 h보다 큰 것을 찾으면 된다 |
2. 풀이방법
1. [python] 이분탐색
def hindex(mid,citations): #hindex가 가능한지를 판별하는 함수
index=10000 #mid보다 작은 값들, 큰값들을 분리하기위한 인덱스
for i in range(len(citations)):
if citations[i]>=mid: #mid보다 같거나 큰 부분이 나올경우
index=i
break
if len(citations)-index>=mid:# h번(mid) 이상 인용된 논문이 h편(mid)이상이라면
return True
return False
def solution(citations):
#1.논문의 인용횟수 정렬
citations.sort()
s,e=0,len(citations) #h-index가 가능한 범위는 0~논문의 수
res=0 #hindex
#2. 이분탐색
while s<=e:
mid=(s+e)//2
if hindex(mid,citations) : #h인덱스가 가능하면
s=mid+1
res=mid
else: #불가능하면
e=mid-1
return res
2. [python] 정렬
def solution(citations):
citations.sort()
n=len(citations) #논문의 수
for i in range(n):
if citations[i]>=n-i: #citations[i]보다 크거나 같은 논문이 n-i개 있다면
return n-i
return 0
3. 오답원인
4. 알게된 점
'PS > Programmers' 카테고리의 다른 글
[프로그래머스] 가장 큰 정사각형 찾기 (0) | 2020.10.23 |
---|---|
[프로그래머스] 전화번호 목록 (0) | 2020.10.22 |
[프로그래머스] 구명보트 (0) | 2020.10.22 |
[프로그래머스] 프린터 (0) | 2020.10.21 |
[프로그래머스] 더맵게 (0) | 2020.10.21 |
Comments