๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿš€ Development/Problem Solving

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] H-Index (Lv.2) - ํŒŒ์ด์ฌ(Python)

by Jay Din 2024. 6. 19.
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œํ’€์ด

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

 

์ œํ•œ์‚ฌํ•ญ

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

 

์ž…์ถœ๋ ฅ ์˜ˆ

citations return
[3, 0, 6, 1, 5] 3
[1, 2, 3, 5, 6, 7, 10, 11] 5
[1, 11, 111, 1111] 3

 

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ด ๊ณผํ•™์ž๊ฐ€ ๋ฐœํ‘œํ•œ ๋…ผ๋ฌธ์˜ ์ˆ˜๋Š” 5ํŽธ์ด๊ณ , ๊ทธ์ค‘ 3ํŽธ์˜ ๋…ผ๋ฌธ์€ 3ํšŒ ์ด์ƒ ์ธ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋จธ์ง€ 2ํŽธ์˜ ๋…ผ๋ฌธ์€ 3ํšŒ ์ดํ•˜ ์ธ์šฉ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ณผํ•™์ž์˜ H-Index๋Š” 3์ž…๋‹ˆ๋‹ค.


๋ฌธ์ œ ํ’€์ด

์ด ๋ฌธ์ œ๋ฅผ ํ•œ ์ค„๋กœ ์ •๋ฆฌํ•˜๋ฉด, 

ํ•œ ๊ณผํ•™์ž์˜ ๋…ผ๋ฌธ ์ค‘์—์„œ, ์ ์–ด๋„ ๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด hํŽธ ์ด์ƒ์ธ ๊ฒฝ์šฐ์˜ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋‹ค.

 

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

์˜ˆ์ œ, [6, 5, 3, 1, 0] ๋ฅผ ๋ณด๋ฉด,

 

  • ์ฒซ ๋ฒˆ์งธ ๋…ผ๋ฌธ์€ 6๋ฒˆ ์ธ์šฉ๋จ: 1 <= 6 → ์ฐธ
  • ๋‘ ๋ฒˆ์งธ ๋…ผ๋ฌธ์€ 5๋ฒˆ ์ธ์šฉ๋จ: 2 <= 5 → ์ฐธ
  • ์„ธ ๋ฒˆ์งธ ๋…ผ๋ฌธ์€ 3๋ฒˆ ์ธ์šฉ๋จ: 3 <= 3 → ์ฐธ
  • ๋„ค ๋ฒˆ์งธ ๋…ผ๋ฌธ์€ 1๋ฒˆ ์ธ์šฉ๋จ: 4 <= 1 → ๊ฑฐ์ง“
  • ๋‹ค์„ฏ ๋ฒˆ์งธ ๋…ผ๋ฌธ์€ 0๋ฒˆ ์ธ์šฉ๋จ: 5 <= 0 → ๊ฑฐ์ง“

๋„ค ๋ฒˆ์งธ ๋…ผ๋ฌธ์ด 1๋ฒˆ ์ธ์šฉ๋˜์—ˆ๊ณ , ๊ฐ’์„ 4๋กœ ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ์œ„ ์กฐ๊ฑด์— ๊ฐ’์„ ๋Œ€์ž…ํ•˜์—ฌ ๋น„๊ตํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด ํŽธ ์ด์ƒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋„ค ๋ฒˆ์งธ ๋…ผ๋ฌธ์ด 1๋ฒˆ ์ธ์šฉ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๋…ผ๋ฌธ์ด ๋ฒˆ ์ด์ƒ ์ธ์šฉ๋˜๋ ค๋ฉด h ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ h๋ฅผ 4๋กœ ๊ฐ€์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

def solution(citations):
    answer = 0
    
    # 1. ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
    cit = sorted(citations, reverse = True) 
    
    # 2. ์ธ๋ฑ์Šค์™€ ์ธ์šฉ ํšŸ์ˆ˜๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ™•์ธ
    for num, citations in enumerate(cit):
        # 3. ์ธ์šฉ ํšŸ์ˆ˜๊ฐ€ ์ธ๋ฑ์Šค๋ณด๋‹ค ํฌ๋‹ค๋ฉด
        # ์ฝ”๋“œ์ƒ ์ธ๋ฑ์Šค๊ฐ€ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— +1์„ ํ•ด์คŒ
        if num+1 <= citations:
            # 4. H-Index ๊ฐฑ์‹ 
            answer = num+1
    
    return answer

 

 

728x90
๋ฐ˜์‘ํ˜•