본문 바로가기

코딩테스트

[프로그래머스] H-Index

https://school.programmers.co.kr/learn/courses/30/lessons/42747

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

[Lv2, 정답률 64%]

 

1. list가 비어있을 가능성

max(list)를 쓸 때, list가 비어있을 가능성을 생각해야한다. 빈 리스트에 max 함수를 쓰면 런타임 오류가 난다.

 

2. '이상'인지 '같을 때'인지 생각하기

이래서 틀리면 문제를 찬찬히 한번, 코드 찬찬히 한번 다시 읽어봐야한다. 문제에서는 'h번 이상 인용된 논문이 h편 이상' 이라고 했는데 내가 '이상'을 누락시키면서 테스트케이스 11번이 실패가 떴다.

정답

def solution(citations):
    answers = []
    for i in range(1, max(citations)+1) :
        papers_count = 0
        for paper in citations :
            if paper >= i :
                papers_count += 1
        
        if papers_count >= i :
            answers.append(i)
    
    if answers :
        answer = max(answers)
        return answer
    else :
        return 0