Algorithm/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[C++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - "H-index" ํ’€์ด

meeeeejin 2020. 6. 3. 22:08

๋ฌธ์ œ ์„ค๋ช…

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

 

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

 

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

 

๋ฌธ์ œ ์ฃผ์†Œ: https://programmers.co.kr/learn/courses/30/lessons/42747

 

 

๋ฌธ์ œ ํ’€์ด

์œ„ํ‚ค๋ฐฑ๊ณผ์— ๋‚˜์˜ค๋Š” H-index์˜ ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

 

์ถœ์ฒ˜: https://en.wikipedia.org/wiki/H-index

๋…ผ๋ฌธ์˜ ์ธ์šฉ ํšŸ์ˆ˜๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ–ˆ์„ ๋•Œ, (index + 1) <= citations[i]์„ ๋งŒ์กฑํ•˜๋Š” ์ตœ๋Œ€ index + 1์ด H-index์ด๋‹ค. ์ด๋•Œ index + 1์€ citations[i]๋ฒˆ ์ด์ƒ ์ธ์šฉํ•œ ๋…ผ๋ฌธ์˜ ๊ฐœ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 

 

์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•˜์ž๋ฉด

citations = [3, 0, 6, 1, 5]์ผ ๊ฒฝ์šฐ, ์ด๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด [6, 5, 3, 1, 0]์ด๋‹ค. 

  • 6๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์˜ ์ˆ˜: 1๊ฐœ  // 1 <= 6

  • 5๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์˜ ์ˆ˜: 2๊ฐœ  // 2 <= 5

  • 4๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์˜ ์ˆ˜: 3๊ฐœ  // 3 <= 4

  • 3๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์˜ ์ˆ˜: 4๊ฐœ   // 4 > 3 ์ด๋ฏ€๋กœ ์œ„์˜ ์กฐ๊ฑด ๋ถˆ๋งŒ์กฑ

์ด ์˜ˆ์‹œ์—์„œ (index + 1) <= citations[i]๋ฅผ ๋งŒ์กฑํ•˜๋Š” (index + 1)์€ [1, 2, 3]์ด๊ณ , ์ด ์ค‘ ์ตœ๋Œ“๊ฐ’์ธ 3์ด H-index๊ฐ€ ๋œ๋‹ค. 

 

 

์˜ˆ์‹œ2) citations = [100, 50, 10]์ผ ๊ฒฝ์šฐ

  • 100๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์˜ ์ˆ˜: 1๊ฐœ

  • 50๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์˜ ์ˆ˜: 2๊ฐœ

  • 10๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์˜ ์ˆ˜: 3๊ฐœ

์ด ์˜ˆ์‹œ์—์„œ (index + 1) <= citations[i]๋ฅผ ๋งŒ์กฑํ•˜๋Š” (index + 1)์€ [1, 2, 3]์ด๊ณ , ์ด ์ค‘ ์ตœ๋Œ“๊ฐ’์ธ3์ด H-index๊ฐ€ ๋œ๋‹ค. 

 

 

์†Œ์Šค ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
int solution(vector<int> citations) {
    int answer = 0;
    sort(citations.begin(), citations.end(), greater<int>()); // citations๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
 
    for (int i = 0; i < citations.size(); i++) {
        if (i + 1 <= citations[i]) // (i + 1)์€ citations[i]๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์˜ ์ˆ˜
            answer = i + 1;
        else
            break;
    }
    
    return answer;
}
cs

 

728x90