문제
https://school.programmers.co.kr/learn/courses/30/lessons/42747
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 해석
https://www.ibric.org/myboard/read.php?Board=news&id=270333
[연구논문을 위한 핵심 10단계] H-지수(H-Index) 란 무엇인가?
일반적으로 특정 연구원의 연구성과를 평가하기 위해 얼마나 많은 논문을 발표 하였는지를 보게됩니다. 그러나 단순히 발표한 논문 수로만 그 연구원의 연구 업적을 평가 하기에는 발표한 논문
www.ibric.org
이 링크를 참조하고 읽어보는것이 좋다
문제풀이
def solution(citations):
citations.sort()
cnt=0
for i in range(len(citations)):
if len(citations)-i <= citations[i]:
cnt+=1
return cnt
설명:
논문을 내림차순으로 정렬한다. -> 순서대로 논문과 h-index값을 찾기위해서
이후 cnt (값을 세는 변수)를 0으로 초기화해준다
for문을 돌린다 (0~논문개수까지)
정렬된 [0,1,3,5,6]
len(citations)-i = h 라 하면,
h = 5 , citiation[0]= 0
h = 4 , citiation[1]= 1
h = 3, citiation[2]= 3 cnt =1
h = 2 , citiation[1]= 5 cnt = 2
h = 1, citiation[2]= 6 cnt =3
h 가 3일때 h-index값을 알아낼 수 있다
결국 이 풀이는 적합한 값이 나올때까지 값을 누적해야하므로 답이 3이나온다.
다른테스트케이스
[8,7,7,6,5,5,3] 답: 5
내 방식대로 내림차순 정렬
[3,5,5,6,7,7,8]
h = 7 , citiation[0]= 3
h = 6 , citiation[1]= 5
h = 5, citiation[2]= 5 cnt = 1
h = 4, citiations[3] = 6 cnt= 2
h = 3, citiations[4] = 7 cnt= 3
h = 2, citiations[5] = 7 cnt = 4
h = 1, citiations[6] = 8 cnt = 5
더 좋은 다른 풀이
def solution(citations):
citations.sort(reverse=True)
for idx, i in enumerate(citations):
if i <= idx:
return idx
break
return len(citations)
'💡 Codeing Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 2019 카카오 인턴 문제 : 실패율 (python) (0) | 2023.02.15 |
---|---|
[프로그래머스] 핸드폰 번호 가리기 (python) (0) | 2023.02.14 |
[프로그래머스] 시저암호 (python) (0) | 2023.02.14 |
[프로그래머스] 가장 큰 수 (python) (0) | 2023.02.05 |
[프로그래머스] 타겟 넘버 (python), DFS (0) | 2023.01.29 |