ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / H-Index(C++)

2023. 3. 24. 19:42ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

https://school.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 <algorithm>

using namespace std;

int solution(vector<int> citations) {
    int answer = 0;
    
    // citations๋ฅผ ํฐ ์ˆ˜๋ถ€ํ„ฐ ์ •๋ ฌ
    sort(citations.begin(), citations.end(),greater<int>());
    
    // ๊ฐ€์žฅ ๋งŽ์ด ์ธ์šฉ๋œ ํšŸ์ˆ˜๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ค„์—ฌ๊ฐ€๋ฉฐ ์กฐ๊ฑด์— ๋งž๋Š” h๋ฅผ ์ฐพ๋Š”๋‹ค.
    int h = citations[0];   // ๊ฐ€์žฅ ๋งŽ์ด ์ธ์šฉ๋œ ๋…ผ๋ฌธ์˜ ์ธ์šฉ ํšŸ์ˆ˜
    while(h > 0)
    {
        int above_h = 0;    // h๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ ์ˆ˜
        int below_h = 0;    // ๋‚˜๋จธ์ง€ ๋…ผ๋ฌธ ์ˆ˜
        
        // h๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ ์ˆ˜ ์ฐพ๊ธฐ
        for(int j = 0; j < citations.size(); ++j)
        {
            if(h <= citations[j])
                ++above_h;
            else
                break;
        }
        
        // ๋‚˜๋จธ์ง€ ๋…ผ๋ฌธ ์ˆ˜ ์ฐพ๊ธฐ
        below_h = citations.size() - above_h;
        
        // ์กฐ๊ฑด ๊ฒ€์‚ฌ
        if(above_h >= h && below_h <= h)
            return h;
        
        // ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š์„ ์‹œ h๋ฅผ ํ•˜๋‚˜ ์ค„์—ฌ ํƒ์ƒ‰์„ ์ด์–ด๊ฐ„๋‹ค.
        else
            --h;
    }
    
    return answer;
}

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ–ฅ๏ธ Study Note > Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.1 / ๋ชจ์˜๊ณ ์‚ฌ(C++)  (0) 2023.03.27
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.1 / ์ตœ์†Œ์ง์‚ฌ๊ฐํ˜•(C++)  (0) 2023.03.27
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ๊ฐ€์žฅ ํฐ ์ˆ˜(C++)  (0) 2023.03.23
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.1 / K๋ฒˆ์งธ์ˆ˜(C++)  (2) 2023.03.23
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค C++ ๋ ˆํผ๋Ÿฐ์Šค ์‚ฌ์ดํŠธ  (0) 2023.03.21
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.1 / ๋ชจ์˜๊ณ ์‚ฌ(C++)
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.1 / ์ตœ์†Œ์ง์‚ฌ๊ฐํ˜•(C++)
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / ๊ฐ€์žฅ ํฐ ์ˆ˜(C++)
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.1 / K๋ฒˆ์งธ์ˆ˜(C++)
Beankong_
Beankong_
์ฃผ๋‹ˆ์–ด ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ณต๋ถ€ ๊ธฐ๋ก
  • Beankong_
    Beankong's Devlog
    Beankong_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (146)
      • โ›… Daily (0)
      • ๐Ÿ–ฅ๏ธ Study Note (2)
        • C++ (1)
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • ๐Ÿงญ Devlog (8)
        • ์˜ค๋‹ต๋…ธํŠธ (4)
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
Beankong_
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค / level.2 / H-Index(C++)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”