[Python - ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level2] H-Index

2021. 1. 21. 23:17ใ†๐Ÿ“š Algorithm/๐Ÿ’ช๐Ÿป Python ๋ฌธ์ œ ํ’€์ด

๋ฐ˜์‘ํ˜•
 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - H-Index

H-Index๋Š” ๊ณผํ•™์ž์˜ ์ƒ์‚ฐ์„ฑ๊ณผ ์˜ํ–ฅ๋ ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค. ์–ด๋Š ๊ณผํ•™์ž์˜ H-Index๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ธ h๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์œ„ํ‚ค๋ฐฑ๊ณผ1์— ๋”ฐ๋ฅด๋ฉด, H-Index๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œ

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

H-Index๋Š” ๊ณผํ•™์ž์˜ ์ƒ์‚ฐ์„ฑ๊ณผ ์˜ํ–ฅ๋ ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ์ž…๋‹ˆ๋‹ค. ์–ด๋Š ๊ณผํ•™์ž์˜ H-Index๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ธ h๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์œ„ํ‚ค๋ฐฑ๊ณผ1์— ๋”ฐ๋ฅด๋ฉด, H-Index๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ nํŽธ ์ค‘, h๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด hํŽธ ์ด์ƒ์ด๊ณ  ๋‚˜๋จธ์ง€ ๋…ผ๋ฌธ์ด h๋ฒˆ ์ดํ•˜ ์ธ์šฉ๋˜์—ˆ๋‹ค๋ฉด h์˜ ์ตœ๋Œ“๊ฐ’์ด ์ด ๊ณผํ•™์ž์˜ H-Index์ž…๋‹ˆ๋‹ค.

์–ด๋–ค ๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ์˜ ์ธ์šฉ ํšŸ์ˆ˜๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด citations๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ด ๊ณผํ•™์ž์˜ H-Index๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • ๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ์˜ ์ˆ˜๋Š” 1ํŽธ ์ด์ƒ 1,000ํŽธ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ๋…ผ๋ฌธ๋ณ„ ์ธ์šฉ ํšŸ์ˆ˜๋Š” 0ํšŒ ์ด์ƒ 10,000ํšŒ ์ดํ•˜์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅํ˜•์‹

์ ์ˆ˜|๋ณด๋„ˆ์Šค|[์˜ต์…˜]์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด 3์„ธํŠธ.
์˜ˆ) 1S2D*3T

  • ์ ์ˆ˜๋Š” 0์—์„œ 10 ์‚ฌ์ด์˜ ์ •์ˆ˜์ด๋‹ค.
  • ๋ณด๋„ˆ์Šค๋Š” S, D, T ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
  • ์˜ต์„ ์€ *์ด๋‚˜ # ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ์—†์„ ์ˆ˜๋„ ์žˆ๋‹ค.

์ถœ๋ ฅํ˜•์‹

3๋ฒˆ์˜ ๊ธฐํšŒ์—์„œ ์–ป์€ ์ ์ˆ˜ ํ•ฉ๊ณ„์— ํ•ด๋‹นํ•˜๋Š” ์ •์ˆ˜๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.
์˜ˆ) 37

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

ํ’€์ด ๊ณผ์ •

๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒŒ ์ „๋ถ€์˜€๋˜ ๋ฌธ์ œ์˜€๋‹ค. ๊ทธ๋งŒํผ ๋ฌธ์ œ๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์› ๋‹ค. H - Index ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž˜ ๋ชจ๋ฅด์‹œ๊ฒ ๋‹ค๋ฉด ?! ์•„๋ž˜ ๊ธ€์„ ์ฝ์–ด๋ณด๊ณ  ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋ฉด ์‰ฝ๊ฒŒ ํ’€์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. 

 

[์—ฐ๊ตฌ๋…ผ๋ฌธ์„ ์œ„ํ•œ ํ•ต์‹ฌ 10๋‹จ๊ณ„] H-์ง€์ˆ˜(H-Index) ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์ผ๋ฐ˜์ ์œผ๋กœ ํŠน์ • ์—ฐ๊ตฌ์›์˜ ์—ฐ๊ตฌ์„ฑ๊ณผ๋ฅผ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ๋…ผ๋ฌธ์„ ๋ฐœํ‘œ ํ•˜์˜€๋Š”์ง€๋ฅผ ๋ณด๊ฒŒ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹จ์ˆœํžˆ ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ ์ˆ˜๋กœ๋งŒ ๊ทธ ์—ฐ๊ตฌ์›์˜ ์—ฐ๊ตฌ ์—…์ ์„ ํ‰๊ฐ€ ํ•˜๊ธฐ์—๋Š” ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ

www.ibric.org

2๊ฐ€์ง€ ๋ฒ„์ „์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. 

1. ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋’ค ํ’€์ด๊ณผ์ •

def solution(citations):
    citations.sort()
    for idx , citation in enumerate(citations):
        if citation >= len(citations) - idx :
            return len(citations) - idx
    return 0

2. ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋’ค ํ’€์ด๊ณผ์ •

def solution(citations):
    citations.sort(reverse=True)
    for idx , citation in enumerate(citations):
        if idx >= citation:
            return idx
    return len(citations)

๊ฐœ์ธ์ ์œผ๋กœ๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋’ค ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์ด ๋” ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ํ’€์ด ๋ฐฉ์‹๊ฐ™๋‹ค.

 

 

๋ฐ˜์‘ํ˜•