๐Ÿ“ Coding Test Study/Algorithm Problem

[C++][Programmers][์ •๋ ฌ] H-Index

ibelieveinme 2023. 4. 20. 23:59
728x90

[๋ฌธ์ œ]

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

 

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

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

[ํ•ด๊ฒฐ๋ฒ•]

[3, 0, 6, 1, 5] ๊ฐ€ ์žˆ์„ ๋•Œ h๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ ํšŸ์ˆ˜๊ฐ€ h๊ฐœ ์ด์ƒ์ด๊ณ  ๋‚˜๋จธ์ง€๊ฐ€ h๋ฒˆ ์ดํ•˜๋กœ ์ธ์šฉ๋˜๋ฉด ๋œ๋‹ค.

์ฆ‰, h = 1์ผ ๋•Œ -> 1๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด 1๊ฐœ ์ด์ƒ์ด์–ด์•ผ ํ•จ. ๋‚˜๋จธ์ง€๊ฐ€ 1์ดํ•˜๋กœ ์ธ์šฉ๋˜์–ด์•ผ ํ•จ.

      h = 2์ผ ๋•Œ -> 2๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด 2๊ฐœ ์ด์ƒ์ด์–ด์•ผ ํ•จ. ๋‚˜๋จธ์ง€๊ฐ€ 2์ดํ•˜๋กœ ์ธ์šฉ๋˜์–ด์•ผ ํ•จ.

      h = 3 ์ผ ๋•Œ -> 3๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด 3๊ฐœ ์ด์ƒ์ด์–ด์•ผ ํ•จ. ๋‚˜๋จธ์ง€๊ฐ€ 3์ดํ•˜๋กœ ์ธ์šฉ๋˜์–ด์•ผ ํ•จ.

          .

          .

          .

(์˜ค๋‹ต)

h ๊ฐ’์„ 1๋ถ€ํ„ฐ 1์”ฉ ๋Š˜๋ ค๊ฐ€๋ฉฐ ๋ฐฐ์—ด์„ ๋‹ค ๋Œ๋ฉด์„œ ํŒ๋‹จํ•  ๊ฒƒ์ธ๊ฐ€... ๊ทธ๋Ÿฌ๊ธฐ์—” ์ œํ•œ์‚ฌํ•ญ์˜ ์ˆซ์ž ๊ฐ’์ด ๋„ˆ๋ฌด ํผ(๋ฌด์กฐ๊ฑด ์‹œ๊ฐ„์ดˆ๊ณผ)

๋ฒกํ„ฐ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ ํ›„ h ๊ฐ’์„ 0๋ถ€ํ„ฐ 1์”ฉ ๋Š˜๋ ค๊ฐ€๋ฉฐ ํƒ์ƒ‰ํ•˜๋‹ค๊ฐ€ h๊ฐ’ ์ด์ƒ์ธ ์ˆ˜๋ฅผ ๋งŒ๋‚˜๋ฉด "๋ฒกํ„ฐ ๊ธธ์ด - h" ๊ฐ’์œผ๋กœ ํฐ ๊ฐ’์˜ ๊ฐœ์ˆ˜๋ฅผ ์ฐพ์•„์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฐ’์ด h๊ฐœ์ด๋ฉด ์ •๋‹ต์œผ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.

-> ๋ฌธ์ œ๋ฅผ ๋œ ์ดํ•ดํ•œ๊ฑฐ๋‹ค... [4, 3, 3, 3, 3] ์ผ€์ด์Šค์˜ ์ •๋‹ต์ด 3์ธ๋ฐ ์œ„ ์ฒ˜๋Ÿผ ์งœ๋ฉด 3๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด 5๊ฐœ๋ผ์„œ 3์„ ๋„์ถœ์•ˆํ•œ๋‹ค.

-> h ๊ฐ’์„ 0๋ถ€ํ„ฐ 1์”ฉ ๋Š˜๋ ค์„œ ์ฐพ์„ ํ•„์š” ์—†์ด ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•œ ๋ฒกํ„ฐ๋ฅผ ์ˆœํ™˜ํ•˜๋ฉด์„œ ์ธ์šฉ๋œ ํšŸ์ˆ˜ < h index๋ฅผ ๋งŒ์กฑํ•˜๋Š” h index๋ฅผ ์ฐพ์œผ๋ฉด ๋œ๋‹ค.

 

4 3 3 3 3

์ฒซ๋ฒˆ์งธ ๋…ผ๋ฌธ 4์˜ h index๋Š” 1

๋‘๋ฒˆ์งธ ๋…ผ๋ฌธ 3์˜ h index๋Š” 2

์„ธ๋ฒˆ์งธ ๋…ผ๋ฌธ 3์˜ h index๋Š” 3

๋„ค๋ฒˆ์งธ ๋…ผ๋ฌธ 3์˜ h index๋Š” 4์ธ๋ฐ h index๋ณด๋‹ค ์ธ์šฉ๋œ ๋…ผ๋ฌธ ํšŸ์ˆ˜๊ฐ€ ์ž‘์œผ๋ฏ€๋กœ ํƒ์ƒ‰์„ ๋ฉˆ์ถ”๊ณ  3์„ ๋ฆฌํ„ดํ•œ๋‹ค.

 

 

์—ฃ์ง€ ์ผ€์ด์Šค ์ฐธ๊ณ ...

 

[์•Œ์•„๋‘˜ ๊ฒƒ]

๋ฒกํ„ฐ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ

sort(v.begin(), v.end(), greater<int>());

 

[์ฝ”๋“œ]

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

int solution(vector<int> citations) {
    int answer = 0;
    
    //answer๊ฐ’ ๊ตฌํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ. 6 5 3 1 0
    sort(citations.begin(), citations.end(), greater<int>()); 
    
    // ์ตœ๋Œ€๊ฐ’์ด 0์ด๋ฉด 0 ์ถœ๋ ฅ
    if(!citations[0]) { return 0; }
    
    //citations ๋ฒกํ„ฐ ๋Œ๋ฉด์„œ h๋ฒˆ ์ด์ƒ ์ธ์šฉ๋˜์—ˆ๋Š”์ง€ ์ฒดํฌ
    for(int h = 0; h < citations.size(); h++){           
        if(citations[h] > h) answer++;
        else break;
    }
    
    return answer;
}

 

 

728x90