[Programmers] H-Index

Updated:

H-Index

H-Index λ₯Ό ν΄λ¦­ν•˜λ©΄ λ°”λ‘œ μ΄λ™ν•œλ‹€.

H-Index λž€ κ°„λ‹¨νžˆ λ§ν•˜λ©΄ n회 이상 인용 된 논문이 n개 이상일 λ•Œ, n 의 μ΅œλŒ€κ°’μ΄λ‹€.

μœ„ν‚€λ°±κ³Ό λ₯Ό ν΄λ¦­ν•˜λ©΄ 더 μžμ„Έν•œ μ„€λͺ…을 λ³Ό 수 μžˆλ‹€.

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ— λ‚˜μ™€μžˆλŠ” μ„€λͺ…은 보지 μ•ŠλŠ” 것을 μΆ”μ²œν•œλ‹€.

λ„ˆλ¬΄ μ• λ§€ν•˜κ³  ν—·κ°ˆλ¦¬κ²Œ μ„€λͺ…을 μ¨λ‘μ—ˆλ‹€.

심지어 μ˜€λ‹΅ μ½”λ“œλ„ μ •λ‹΅ μ½”λ“œλ‘œ 톡과가 λ˜λ‹ˆ μ‘°μ‹¬ν•˜λ„λ‘ ν•˜μž

λ°‘μ˜ μ½”λ“œλŠ” μ˜€λ‹΅ μ½”λ“œμ΄μ§€λ§Œ μ •λ‹΅ μ½”λ“œλ‘œ 톡과 λ˜λŠ” μ½”λ“œμ΄λ‹€.

def solution(citation):
    H_Index = 0
    sort_citation = set(sorted(citation, reverse=True))

    while sort_citation:
        citation_cnt = 0
        citation_num = sort_citation.pop()

        for val in citation:
            if val >= citation_num:
                citation_cnt += 1

        if citation_cnt <= citation_num:
            if H_Index < citation_cnt:
                H_Index = citation_cnt

    return H_Index

μœ„ μ½”λ“œμ—μ„œ 13번 μ§Έ μ€„μ˜ if 문을 λ³Έλ‹€λ©΄ H-Index 의 μ •λ°˜λŒ€λ‘œ 싀행이 λœλ‹€.

n회 이상 인용 된 논문이 n개 μ΄ν•˜μΌ λ•Œ H-Index λ₯Ό κ°±μ‹ ν•œλ‹€.

[3, 3, 3, 3] 이 주어진닀면 H-IndexλŠ” 4κ°€ λ˜μ–΄μ•Ό ν•˜λŠ”λ° κ²°κ³ΌλŠ” 0이 λœλ‹€.

또 [0, 1, 3, 5, 5, 5, 5, 5, 5, 6] 이 주어진 경우 return 값은 5κ°€ λ˜μ–΄μ•Ό ν•˜λŠ”λ° 1이 λ‚˜μ˜¨λ‹€.

μ΄λ ‡κ²Œ 쑰금 λΆ€μ‹€ν•œ 문제인 것 κ°™μœΌλ‹ˆ μ–Όλ₯Έ ν’€κ³  λ„˜μ–΄κ°€μž !!


def solution(citation):
	h = 0
	for citation_num in range(max(citation) + 1):
		cnt = 0

		for val in citation:
			if citation_num <= val:
				cnt += 1

		if citation_num <= cnt:
			h = citation_num

	return h

μ•žμ„œ μž‘μ„± ν•œ 였λ₯˜κ°€ μžˆλŠ” μ½”λ“œλŠ” 인용 횟수인 n 을 1λΆ€ν„° citation의 max κ°’ κΉŒμ§€ 확인을 ν•˜μ§€ μ•Šκ³ 

citation에 μžˆλŠ” 인용 횟수만 검사λ₯Ό ν•œλ‹€.

μœ„ μ½”λ“œλŠ” 인용 횟수λ₯Ό 0 λΆ€ν„° citation의 max κ°’ κΉŒμ§€ λͺ¨λ‘ 검사λ₯Ό ν•œλ‹€.


Categories:

Updated:

Leave a comment