본문 바로가기
프로그래머스/Python

[프로그래머스] H-Index - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 16.
728x90
반응형

 

 

프로그래머스

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

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

  1. 논문의 인용 횟수를 담은 리스트를 오름차순으로 정렬한다. citations.sort()
  2. 만족하는 Index를 저장할 리스트를 생성한다. li = list()
  3. 인덱스는 0부터 논문의 인용 횟수의 최댓값까지 가능하므로 반복한다. for h in range(max(citations) + 1)
  4. 인덱스보다 많이 인용된 논문의 수를 저장할 변수를 생성하고 초기화한다. count = 0
  5. 논문의 인용 횟수를 하나씩 추출하여 for i in citations
  6. 만약 인용 횟수가 인덱스보다 크거나 같다면 논문의 수를 1 증가시킨다. if (h <= i): count += 1
  7. 모든 인용 횟수에 대한 판별이 끝나고 만약 인덱스 이상 인용된 논문이 인덱스 이상이면 if (count >= h)
  8. 리스트에 인덱스를 추가한다. li.append(h)
  9. 반면에 인덱스 이상 인용된 논문이 인덱스보다 작다면 그다음 인덱스도 같은 결과가 도출되므로 이후 인덱스는 판별할 필요가 없다. 따라서 종료한다. else: break
  10. 만족하는 인덱스를 저장한 리스트에서 가장 큰 값을 정답에 저장한다. answer = max(li)
반응형

3. 소스코드

def solution(citations):
    answer = 0
    
    citations.sort()
    
    li = list()
    for h in range(max(citations) + 1):
        count = 0
        for i in citations:
            if (h <= i):
                count += 1
        
        if (count >= h):
            li.append(h)
        else:
            break
                
    answer = max(li)
    
    return answer
728x90
반응형