๐กsolutions )
โ ์ฒ์ ๋ฌธ์ ๋ฅผ ํ๊ณ ํ ์คํธ์ผ์ด์ค ๋ช๊ฐ๋ฅผ ํต๊ณผํ์ง ๋ชปํด์ ์ง๋ฌธํ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ๋ฉฐ ์์ธ ์ํฉ์ ์ฒ๋ฆฌํด์ฃผ์๋ค.
โ ์ด ์ธ ๊ฐ์ง ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์๋๋ฐ
โ ๋ชจ๋ ๋ ผ๋ฌธ์ ์ธ์ฉ ํ์๊ฐ ์ ์ฒด ๋ ผ๋ฌธ ๊ฐ์ ๋ณด๋ค ํฐ ๊ฒฝ์ฐ -> ๋ ผ๋ฌธ์ ์ ๋ฆฌํด
โก ๋ชจ๋ ๋ ผ๋ฌธ์ ์ธ์ฉ ํ์๊ฐ 0์ธ ๊ฒฝ์ฐ -> 0 ๋ฆฌํด
โข ๋ชจ๋ ๋ ผ๋ฌธ์ ์ธ์ฉ ํ์๊ฐ ๋์ผํ ๊ฒฝ์ฐ -> ๋ ผ๋ฌธ์ ์ ๋ฆฌํด
๐ซcode )
def solution(citations):
citations.sort(reverse = True)
max_v = citations[0]
min_v = citations[-1]
# ์ธ ๊ฐ์ง ์์ธ์ฒ๋ฆฌ
if min_v > len(citations): # ๋ชจ๋ ๋
ผ๋ฌธ์ ์ธ์ฉ ํ์๊ฐ ์ ์ฒด ๋
ผ๋ฌธ ๊ฐ์ ๋ณด๋ค ํฐ ๊ฒฝ์ฐ
return len(citations) # ๋
ผ๋ฌธ์ ์๋ฅผ ๋ฆฌํดํ๋ค
if max_v == 0: # ๋ชจ๋ ๋
ผ๋ฌธ์ ์ธ์ฉ ํ์๊ฐ 0์ธ ๊ฒฝ์ฐ
return 0
# H-Index ๊ตฌํ๋ ๋ก์ง
while (max_v!=0):
cnt = 1
for i, c in enumerate(citations):
if c < max_v:
cnt = i
break
elif c == max_v: # ๋ชจ๋ ๋
ผ๋ฌธ์ ์ธ์ฉ ํ์๊ฐ ๋์ผํ ๊ฒฝ์ฐ(์์ธ์ฒ๋ฆฌ)
cnt += 1
if cnt >= max_v:
return max_v
max_v -= 1
๐ description )
๋ฌธ์ ์ถ์ฒ : https://programmers.co.kr/learn/courses/30/lessons/42747?language=python3
์ฝ๋ฉํ ์คํธ ์ฐ์ต - 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ํ ์ดํ์ ๋๋ค.
์ ์ถ๋ ฅ ์
citationsreturn
[3, 0, 6, 1, 5] 3 ์ ์ถ๋ ฅ ์ ์ค๋ช
์ด ๊ณผํ์๊ฐ ๋ฐํํ ๋ ผ๋ฌธ์ ์๋ 5ํธ์ด๊ณ , ๊ทธ์ค 3ํธ์ ๋ ผ๋ฌธ์ 3ํ ์ด์ ์ธ์ฉ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋จธ์ง 2ํธ์ ๋ ผ๋ฌธ์ 3ํ ์ดํ ์ธ์ฉ๋์๊ธฐ ๋๋ฌธ์ ์ด ๊ณผํ์์ H-Index๋ 3์ ๋๋ค.