[c++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค :: H-index (๋ฌธ์ œ ํ’€์ด, ์ฝ”๋“œ)

H-index

๋ฌธ์ œ

https://programmers.co.kr/learn/courses/30/lessons/42747#

๋ฌธ์ œ ์„ค๋ช…

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ํšŒ ์ดํ•˜์ž…๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

citations return
[3, 0, 6, 1, 5] 3

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

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

 

์ฝ”๋“œ

#include <string>
#include <vector>
#include <set>

using namespace std;

int solution(vector<int> citations) {
    int answer = 0;
    int size = citations.size();
    set<int> result;

    for(int i=1; i<=10000; i++){ // 10^4
        int tmp = 0;
        int flag = 0;
        for(int j=0; j<size; j++){ // 10^3
            if(citations[j]>=i)
                tmp++;
            if(tmp>=i){
                flag =1;
                break;
            }
        }
        if(flag==1){
            result.insert(i);
        }
    }
    answer = *(result.end()--);
    return answer;
}

 

ํ’€์ด

์šฐ์„  ์ฒ˜์Œ์—๋Š” ๋‹จ์ˆœํ•˜๊ฒŒ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜์—ฌ, ๋’ค์—์„œ๋ถ€ํ„ฐ ์š”์†Œ๋“ค์„ ์ฒดํฌํ•˜๋ฉด์„œ ํ•ด๋‹น ์š”์†Œ์˜ ๊ฐ’์ด h-index์— ํ•ด๋‹นํ•˜๋Š”์ง€๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ์‹์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์งœ๋ดค๋‹ค. ํ•˜์ง€๋งŒ ๊ณง ์ •๋‹ต ๊ฐ’์ด ๋ฐฐ์—ด ๋‚ด์˜ ์ˆซ์ž์—์„œ๋งŒ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด [4,4,4]๋ผ๋Š” ์ž…๋ ฅ๊ฐ’์—๋Š” 3์ด๋ผ๋Š” ์ •๋‹ต์ด ๋‚˜์˜ฌ ์ˆ˜๊ฐ€ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‹จ์ˆœํ•˜๊ฒŒ ์ˆ˜๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ ์ฒดํฌํ•ด๋ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ณ , ์ž…๋ ฅ ๋ฒ”์œ„๊ฐ€ ํฌ์ง€ ์•Š์•„์„œ ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์งœ๋ดฃ๋‹ค.

  • 1๋ถ€ํ„ฐ 1์”ฉ ์ฆ๊ฐ€์‹œํ‚ค๋ฉด์„œ ์ˆ˜๋ฅผ ๋”ฐ์ง„๋‹ค.
  • ํ•ด๋‹น ์ˆ˜๋ณด๋‹ค ํฐ ์ˆ˜๊ฐ€ ๋ฐฐ์—ด์— ํ•ด๋‹น ์ˆ˜๋งŒํผ ์žˆ๋‹ค๋ฉด h-index๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ํ›„๋ณด์ด๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋ฐฐ์—ด์„ ํ›‘์œผ๋ฉด์„œ ๋Œ€์†Œ ๊ด€๊ณ„๋ฅผ ๋”ฐ์ง„๋‹ค.
  • ํ›„๋ณด๊ฐ€ ๋˜๋Š” ์ˆ˜๋“ค์€ ๋ชจ๋‘ set์— ๋„ฃ์–ด์„œ ๋งˆ์ง€๋ง‰์— ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์ •๋‹ต์œผ๋กœ ๋‘”๋‹ค.

 

์ฑ„์  ๊ฒฐ๊ณผ

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด

 ์ด์ง„ ํƒ์ƒ‰์œผ๋กœ ํ‘ผ ์‚ฌ๋žŒ๋„ ์žˆ์—ˆ๋‹ค. ์ฃผ์–ด์ง„ ์ž…๋ ฅ์˜ ๋ฒ”์œ„๊ฐ€ 0์—์„œ 10,000๊นŒ์ง€์ด๋‹ˆ, ์ด๋ฅผ ์ด์ง„ํƒ์ƒ‰ํ•ด์„œ ํ‘ผ ๋ฐฉ์‹์ด๋‹ค. ์ด์ง„ ํƒ์ƒ‰์„ ์ƒ๊ฐํ–ˆ์œผ๋ฉด์„œ ์™œ ์ด ํ’€์ด๋กœ ํ–ฅํ•˜์ง€ ๋ชปํ–ˆ๋Š”์ง€... ํ .. ๋‹ค์Œ ๋ฒˆ์—๋Š” ๋” ์ƒ๊ฐํ•ด์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์งœ๋ด์•ผ๊ฒ ๋‹ค. ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ 10^7 ์—์„œ 10^4 ์ •๋„๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•