๐Ÿ”ฅ[99ํด๋Ÿฝ ์ฝ”ํ…Œ ์Šคํ„ฐ๋””] 12์ผ์ฐจ TIL - H-Index

HOONSSACยท2024๋…„ 8์›” 2์ผ
1

99Club Coding Test Study

๋ชฉ๋ก ๋ณด๊ธฐ
12/41
post-thumbnail

โณ๋ฌธ์ œ

๋ฌธ์ œ ์„ค๋ช…

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

์ž…์ถœ๋ ฅ ์˜ˆ

citationsreturn
[3, 0, 6, 1, 5]3

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

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


โœ๏ธํ’€์ด

์ฒซ ๋ฒˆ์žฌ ์‹œ๋„

์šฐ์„ , ๋ฌธ์ œ์˜ ๊ทœ์น™์„ ์ฐพ์„ ๋•Œ, ์ž…๋ ฅ ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด ๋” ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์„ ๊ฑฐ ๊ฐ™์•„ Arrays.sort()ํ•จ์ˆ˜๋กœ ์ •๋ ฌ์„ ํ•ด ์ฃผ์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  citations๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ, ํ•ด๋‹น ์›์†Œ ๊ฐ’๋ณด๋‹ค ํฐ ์›์†Œ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ํฌ๊ณ , ๋‚จ์€ ์›์†Œ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ์›์†Œ๋ณด๋‹ค ์ž‘์œผ๋ฉด, ํ•ด๋‹น ์›์†Œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋„๋ก ๊ตฌํ˜„์„ ํ•˜์˜€๋‹ค.

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        Arrays.sort(citations);
        
        if (citations.length == 1) {
            answer = 0;
        }
        
        else {
            for (int i = 0; i < citations.length; i++) {
                if (citations.length - i >= citations[i] && i + 1 <= citations[i]) {
                    answer = citations[i];
                }
            }
        }
        return answer;
    }
}

๊ทธ๋Ÿฌ๋‚˜ ๊ฒฐ๊ณผ๋Š” ์‹คํŒจ์˜€๋‹ค. ๊ทธ ์ด์œ ๋Š” ๋ฌธ์ œ ์ดํ•ด๋ฅผ ์ž˜ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค๐Ÿซจ

h๊ฐ€ ์ž…๋ ฅ ๋ฐฐ์—ด ์•ˆ์— ์žˆ๋Š” ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ผ ๊ฒƒ์ด๋ผ ์ƒ๊ฐํ•˜๊ณ  ์ ‘๊ทผ์„ ํ–ˆ์—ˆ๋Š”๋ฐ, ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์ฒœ์ฒœํžˆ ์ดํ•ดํ•ด ๋ณด๋‹ˆ h๋Š” citations์˜ ์š”์†Œ์™€๋Š” ๋ณ„๊ฐœ๋กœ, ๊ทธ์ € ์ •์ˆ˜ ๊ฐ’์˜ ์ตœ๋Œ€๊ฐ’์ด์—ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์‹œ๋„

๋‘ ๋ฒˆ์งธ ์‹œ๋„์—์„œ๋Š” ๊ทœ์น™์„ ๋ช‡ ๊ฐ€์ง€ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int h = 0;
        Arrays.sort(citations); // ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
        
        // ๊ธธ์ด๊ฐ€ 1์ธ ๊ฒฝ์šฐ
        if (citations.length == 1) {
            if (citations[0] == 0) {
                h = 0; // [0]์ธ ๊ฒฝ์šฐ
            }
            else {
                h = 1; // [1]์ธ ๊ฒฝ์šฐ
            }
        }
        else if (citations[0] >= citations.length) {
            h = citations.length;
            // ์ž…๋ ฅ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ๊ธธ์ด๋ž‘ ๊ฐ™์€ ๊ฒฝ์šฐ
            // ๊ธธ์ด๊ฐ€ H-Index์ด๋‹ค.
        }
        else {
            int temp = citations[0];
              
            while(true) {
                int count = 0; 
                for (int i = 0; i < citations.length; i++) {
                    if (citations[i] >= temp) {
                        count++;// temp๋ณด๋‹ค ํฐ ์š”์†Œ์˜ ๊ฐฏ์ˆ˜ ์ €์žฅ
                    }
                }
                    
                if (count > temp) {
                    temp++; // ๊ฐฏ์ˆ˜๊ฐ€ temp๋ณด๋‹ค ํฌ๋ฉด temp 1 ์ฆ๊ฐ€ ํ›„ while๋ฌธ ๋ฐ˜๋ณต
                }
                else {          
                    if (count < temp) {
                        h = temp - 1; // ๊ฐฏ์ˆ˜๊ฐ€ temp๋ณด๋‹ค ์ž‘์œผ๋ฉด temp 1 ๊ฐ์†Œ
                    }
                    else {
                        h = temp; // ๊ฐฏ์ˆ˜๊ฐ€ temp๋ž‘ ๊ฐ™๋‹ค๋ฉด H-Index์— temp ์ €์žฅ
                    }
                    break;
                }  
            }
        }
        return h;
    }
}

์—ฌ๋Ÿฌ ์ผ€์ด์Šค๋ฅผ ๊ณ ๋ คํ•ด ๋ณด๋‹ˆ, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ๋จผ์ € ํ•ด์ฃผ์–ด์•ผ ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

๋‚ด๊ฐ€ ๋ฐœ๊ฒฌํ•œ ์„ธ ๊ฐ€์ง€ ์˜ˆ์™ธ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๋‹จ, ์—ฌ๊ธฐ์„œ ์–ธ๊ธ‰๋œ citations๋ฐฐ์—ด์€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ citations์ด๋‹ค.

  • citations์˜ ๊ธธ์ด๊ฐ€ 1์ด๊ณ  ์ฒซ ๋ฒˆ์งธ ์›์†Œ๊ฐ€ 0์ธ ๊ฒฝ์šฐ
  • citations์˜ ๊ธธ์ด๊ฐ€ 1์ด๊ณ  ์ฒซ ๋ฒˆ์งธ ์›์†Œ๊ฐ€ 1์ธ ๊ฒฝ์šฐ
  • citations์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๊ฐ€ citations์˜ ๊ธธ์ด๋ž‘ ๊ฐ™์€ ๊ฒฝ์šฐ

์ด ์„ธ ๊ฐ€์ง€ ์ผ€์ด์Šค๋Š” ์ถœ๋ ฅ ๊ฐ’์ด ์ผ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์กฐ๊ฑด๋ฌธ์œผ๋กœ ๊ฐ๊ฐ ๋ถ„๊ธฐํ•ด ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ๋‹ต์„ ์ถœ๋ ฅํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.

์ด์ œ, ์ผ๋ฐ˜์ ์ธ ์ผ€์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.
temp๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด citations์˜ ์ฒซ ๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ €์žฅํ•ด ์ฃผ์—ˆ๊ณ , citations๋ฅผ ์ญ‰ ์ˆœํšŒํ•˜๋ฉด์„œ, temp๋ณด๋‹ค ํฐ ๊ฐ’์˜ ๊ฐฏ์ˆ˜๋ฅผ countํ•ด ์ฃผ์—ˆ๋‹ค.

๋งŒ์•ฝ, count๊ฐ€ temp๋ณด๋‹ค ํฌ๋ฉด, ์ตœ๋Œ“๊ฐ’์„ ๋” ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๊ธฐ ๋•Œ๋ฌธ์— temp์— 1์„ ๋”ํ•ด ๋ฐ˜๋ณต๋ฌธ์„ ๋” ๋Œ ์ˆ˜ ์žˆ๋„๋ก ํ•˜์˜€๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋งŒ์•ฝ, count๊ฐ€ temp๋ณด๋‹ค ์ž‘๋‹ค๋ฉด, ํ•ด๋‹น temp๊ฐ’์€ ์ตœ๋Œ“๊ฐ’๋ณด๋‹ค 1์ด ๋” ํฌ๋‹ค๋Š” ์˜๋ฏธ์ด๊ธฐ ๋•Œ๋ฌธ์—, temp์— 1์„ ๋บ€ ๊ฐ’์„ ์ตœ์ข… H-Index์— ์ €์žฅํ•ด ์ฃผ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, count๊ฐ€ temp๋ž‘ ๊ฐ™์€ ๊ฒฝ์šฐ๋ผ๋ฉด, temp๊ฐ€ ๋ฐ”๋กœ ์ตœ๋Œ“๊ฐ’์ด๋ผ๋Š” ์˜๋ฏธ์ด๊ธฐ ๋•Œ๋ฌธ์—, temp๋ฅผ ๋ฐ”๋กœ H-Index์— ์ €์žฅํ•ด์คŒ์œผ๋กœ์จ, ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋‹ค ๊ณ ๋ คํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.



๋‹ค๋ฅธ ํ’€์ด

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        
        Arrays.sort(citations);
        
        int len = citations.length;
        for (int i = 0; i < len; i++) {
            int paper = len - i;
            if (citations[i] >= paper) {answer = paper; break;}
        }

        return answer;
    }
}

๋ฌธ์ œ๋ฅผ ํ’€๊ณ , ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ํ’€์ด๋ฅผ ๋ณด๋‹ˆ,, ํ›จ์”ฌ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ทœ์น™์„ฑ์ด ์žˆ์—ˆ๋‹ค..

์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ํ•œ ์š”์†Œ๋ณด๋‹ค ํฐ ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ฐพ์œผ๋ ค๋ฉด, ๊ทธ๋ƒฅ ๋ฐฐ์—ด์˜ ๊ธธ์ด์—๋‹ค๊ฐ€ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋นผ์ฃผ๋ฉด ๋˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด, ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ 1์ธ ๊ฒฝ์šฐ๋ฅผ ๋”ฐ๋กœ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ณ , while๋ฌธ์„ ๋Œ ํ•„์š”๋„ ์—†์–ด์„œ ์‹œ๊ฐ„์ ์œผ๋กœ๋„ ํ›จ์”ฌ ํšจ์œจ์ ์ด๋‹ค.

์ด์ฒ˜๋Ÿผ ๋ฌธ์ œ์™€ ์กฐ๊ฑด์„ ๊ทธ๋Œ€๋กœ ๋ฐ›์•„๋“ค์ด๊ธฐ ๋ณด๋‹ค๋Š”, ํ๋ฆ„์„ ํŒŒ์•…ํ•˜๊ณ  ํ•„์š”ํ•œ ๊ทœ์น™๋“ค๋งŒ ์„ ๋ณ„ํ•ด๋‚ด๋Š” ๊ณผ์ •์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฑธ ๋ผˆ์ €๋ฆฌ๊ฒŒ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ๋˜ ๋ฌธ์ œ์˜€๋‹ค๐Ÿ˜‚


๐Ÿ”—๋ฌธ์ œ ๋งํฌ
๐Ÿ’ปRepository

profile
ํ›ˆ์‹น์˜ ๊ฐœ๋ฐœ์—ฌํ–‰

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2024๋…„ 8์›” 3์ผ

์ง€๋ˆ์ง€๋ˆ....๊ทธ๋ž˜๋„ ํ•ด๋ƒˆ๋‹ค-!

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ