programmers | Lv2. H-Index [Python]

yeonkยท2022๋…„ 3์›” 23์ผ
0

algorithm

๋ชฉ๋ก ๋ณด๊ธฐ
77/88
post-thumbnail

๐Ÿ’ก Python 3






๐Ÿ”— ๋ฌธ์ œ

H-Index [Link]






๐Ÿ’ป ์ฝ”๋“œ

ํšจ์œจ์„ฑ ์ œ๋กœ ๋‚ด ์ฝ”๋“œ

def solution(citations):
    answer = 0
    citations.sort()
    for i in range(max(citations)+1):
        count = 0
        for c in citations:
            if i <= c: count += 1
        if count >= i and len(citations)-count <= i: answer = max(answer, i)
    return answer






๐Ÿ’ฅ ๋‹ค๋ฅธ ์‚ฌ๋žŒ ์ฝ”๋“œ

๋Œ€๋ฐ• !! ์™„์ „ ๊น”๋”ํ•˜๋ฉด์„œ ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ์ž˜ ํ™œ์šฉํ•œ ์ฝ”๋“œ

def solution(citations):
    citations.sort(reverse=True)
    answer = max(map(min, enumerate(citations, start=1)))
    return answer
  • sort๋กœ ๊ฐ€์žฅ ํฐ ๊ฐ’๋ถ€ํ„ฐ ์ž‘์€ ๊ฐ’์œผ๋กœ ์ •๋ ฌ

  • enumerate๋กœ (index, value)ํ˜•ํƒœ๋กœ ๋ฌถ์Œ

  • ์ตœ๋Œ“๊ฐ’(start = 1)๋ถ€ํ„ฐ ๊ฐ value์— ๋Œ€ํ•ด ์ตœ์†Ÿ๊ฐ’ value์˜ ๊ฐ’์„ min์œผ๋กœ ์ถ”์ถœ

    • ์˜ˆ๋ฅผ๋“ค์–ด [6, 5, 4, 1, 0]์˜ ๊ฒฝ์šฐ์—์„  min~ ๋ถ€๋ถ„์€ min(1, 6), min(2, 5), min(3, 4), min(4, 1), min(5, 0), ์ฆ‰ ํ•ด๋‹น ์ธ์šฉ์ˆ˜ ์ด์ƒ์˜ ๋…ผ๋ฌธ๊ฐœ์ˆ˜์™€ ํ•ด๋‹น ๋…ผ๋ฌธ์˜ ์ธ์šฉ์ˆ˜ ์ค‘ ๋” ์ž‘์€ ์ˆซ์ž๋ฅผ ๊ณ ๋ฅด๋Š” ์ž‘์—…์„ ํ•จ
  • ์ด ์ถ”์ถœ๋œ ๊ฐ’์€ enumerate๊ฐ€ ๋๋‚˜๋Š” citations ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐฏ์ˆ˜ ๋ฐ˜ํ™˜

  • map์œผ๋กœ ๋ฌถ์œผ๋ฉด ํ•œ value์˜ ์ž…์žฅ์—์„œ ๋ณด๋Š” ์ตœ์†Ÿ๊ฐ’ value์˜ ์ง‘ํ•ฉ, ์ฆ‰ h๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ ๋ฐ˜ํ™˜

  • h๊ฐ’์ค‘ ์ตœ๋Œ€๊ฐ’์„ max๋กœ ๋ฝ‘์•„์„œ ์ถœ๋ ฅ

0๊ฐœ์˜ ๋Œ“๊ธ€