- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/42747
Lv2. 문제다!
내가 이해한 방식으로 풀었지만, 계속 틀려서 무엇이 문제인지 몰랐던 문제다. 문제에서는 h index가 citations의 값으로 이루어져있다고 하지 않았는데, 그렇다고 생각해 풀어서 아쉬운 문제다
문제 이해
h index의 최댓값은 인용횟수에서 최댓값이므로 1부터 해당 숫자까지 반복문을 돌리고,
h index 후보 i에 대해서 i 이상의 횟수로 인용된 논문의 수를 num에 저장한다
만약 num >= i 인 i 중에 최댓값을 answer에 저장한 다음 반환하면 된다
- 정답풀이 :
def solution(citations):
citations.sort()
answer = 0
for i in range(1, len(citations) + 1):
num = 0
for j in citations:
if j >= i:
num += 1
if num >= i:
answer = max(answer,i)
return answer
- 시도해본 풀이
거의 모든 테스트에 실패했는데, 그 이유가 h는 citations에 있는 숫자가 꼭 아니어도 되는 것을 인지하지 못했다.
[1, 2, 4, 4, 5] 의 경우 2가 아닌 3이 h index이다. (인용 횟수 3이상인 논문이 3이상이므로)
def solution(citations):
citations.sort()
answer = 0
for h in citations:
idx = citations.index(h)
#h번 이상 인용된 논문의 갯수
n = len(citations[idx : ])
if n >= h:
answer = max(answer, h)
return answer
'프로그래머스 > Level 2' 카테고리의 다른 글
[ 스택,큐 / 프로그래머스] 42587번 : 프린터 (0) | 2022.09.19 |
---|---|
[해시 / 프로그래머스] 42577번: 전화번호 목록 (0) | 2022.09.19 |
[해시 / 프로그래머스] 42578번 : 위장 (0) | 2022.09.15 |
[Greedy / 프로그래머스] 42885번 : 구명보트 (0) | 2022.09.11 |
[완전탐색 / 프로그래머스] 42842번 : 카펫 (0) | 2022.09.09 |