๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/programmers

[programmers] ์ •๋ ฌ, H-Index

by dar0m! 2020. 7. 16.
 

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

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

programmers.co.kr

 

๋ฌธ์ œ

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

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

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

 

ํ•ด๊ฒฐ

key point, H-Index๋Š” ์ ˆ๋Œ€ citation์˜ ํฌ๊ธฐ๋ฅผ ๋„˜์ง€ ์•Š๋Š”๋‹ค

๋‚˜๋Š” ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ํ’€์—ˆ์ง€๋งŒ, ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํ‘ผ ์‚ฌ๋žŒ๋“ค๋„ ๋งŽ์•˜๋‹ค.

  • mid๋Š” ์ค‘์•™๊ฐ’ ( ์ตœ์†Œ, ์ตœ๋Œ€์˜ ์ค‘์•™๊ฐ’ : 0~citation.size() )
  • ์ธ์šฉ๋œ ํšŸ์ˆ˜๊ฐ€ mid์ด์ƒ์ธ ๋…ผ๋ฌธ์˜ ๊ฐœ์ˆ˜๋Š” cnt์ด๋‹ค.
  • mid =< cnt ์ผ๋•Œ,
    • ans๋ฅผ ๊ฐ€์žฅํฐ mid๋กœ ๊ฐฑ์‹ ํ•˜๊ณ 
    • ๋” ํฐ mid๋กœ๋„ mid==cnt๋ฅผ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. → go(mid+1, r, arr)
  • mid > cnt ๋ผ๋ฉด,
    • ์ตœ์†Œํ•œ mid==cnt๋ฅผ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•ด์„œ cnt๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ ค์•ผ ํ•˜๋ฏ€๋กœ mid๋ฅผ ์ค„์—ฌ์•ผ ํ•œ๋‹ค.
  • ์ตœ๋Œ€์˜ mid๊ฐ’์„ ์ „์—ญ๋ณ€์ˆ˜ ans๋กœ ํ•ญ์ƒ ๊ฐ–๊ณ  ์žˆ๊ณ ,
  • l๊ณผ r์˜ ๋ฒ”์œ„๊ฐ€ ์—‡๊ฐˆ๋ฆฌ๋Š” ์ˆœ๊ฐ„ ํ•จ์ˆ˜๋Š” ์ข…๋ฃŒ๋˜๊ฒŒ ๋œ๋‹ค.

 

์ฝ”๋“œ

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<int> citations) {
    sort(citations.begin(), citations.end(), greater<int>()); // ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ

    for (int i = 0; i < citations.size(); ++i) {
        if (citations[i] < i + 1) {
            return i;
        }
    }

    return citations.size();
}

๊ต‰์žฅํžˆ ์ฐธ์‹ ํ•˜๊ณ  ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์•„์ง ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ด๋Š” ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค...

H-Index์˜ ๊ฐœ๋…์ด ์ •๋ง ์–ด๋ ค์› ๋˜ ๋ฌธ์ œ

๋Œ“๊ธ€