Algorithm/Java

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/JAVA] H-Index

dbfl9911 2025. 1. 24. 20:39
๋ฐ˜์‘ํ˜•


 

 

๐Ÿ“Œ ๋ฌธ์ œ ์š”์•ฝ 


[ ์˜ค๋‹ต ๋…ธํŠธ ]

โŒ ๊ธฐ์กด ์˜ค๋‹ต ์ฝ”๋“œ

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;

        // 1. ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
        Arrays.sort(citations);

        // 2. ๋ฐ˜๋ณต ํšŸ์ˆ˜ ์„ธ๋Š” ๋ฐ˜๋ณต๋ฌธ
        for (int j = 0; j < citations.length; j++) {
            int up = 0, down = 0;

            if (citations[j] > j) {
                up++;
            } else if (citations[j] < j) {
                down++;
            }

            if (up == down) {
                answer++;
                break;
            }
        }

        return answer;
    }
}



๐Ÿ“Œ ๊ธฐ์กด ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ 

 

- ๋ฌธ์ œ ์กฐ๊ฑด ์ž˜๋ชป ์ดํ•ด

  • "h๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด hํŽธ ์ด์ƒ์ด๊ณ  ๋‚˜๋จธ์ง€ ๋…ผ๋ฌธ์ด h๋ฒˆ ์ดํ•˜ ์ธ์šฉ๋˜์—ˆ๋‹ค๋ฉด h์˜ ์ตœ๋Œ“๊ฐ’์ด ์ด ๊ณผํ•™์ž์˜ H-Index์ž…๋‹ˆ๋‹ค." ์ด ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ "๋…ผ๋ฌธ์ด hํŽธ ์ด์ƒ์ธ ๋…ผ๋ฌธ์˜ ๊ฐœ์ˆ˜ == ๋…ผ๋ฌธ์ด h๋ฒˆ ์ดํ•˜ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์˜ ๊ฐœ์ˆ˜"๋กœ ์ž˜๋ชป์ดํ•ดํ–ˆ๋‹ค. 
  • ๊ธฐ์กด ๋ฌธ์ œ ์กฐ๊ฑด์€ h์˜ ์ตœ๋Œ“๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ์ด๊ณ , ๋”ฐ๋ผ์„œ "h๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด hํŽธ ์ด์ƒ"์ธ ์กฐ๊ฑด๋งŒ ์ถฉ์กฑ์‹œํ‚จ๋‹ค๋ฉด ๋‚˜๋จธ์ง€ ์กฐ๊ฑด์€ ์ž๋™์ ์œผ๋กœ ์ถฉ์กฑํ•˜๊ฒŒ ๋œ๋‹ค. 

 



[ ์ •๋‹ต ์ฝ”๋“œ & ์˜ฌ๋ฐ”๋ฅธ ํ’€์ด ]

๐Ÿ“Œ ์˜ฌ๋ฐ”๋ฅธ ํ’€์ด

1ํšŒ ์ธ์šฉ(1ํšŒ์ด์ƒ): 1,3,5,6 => 4๊ฐœ
        (1ํšŒ์ดํ•˜): 0,1 => 2๊ฐœ
-> 4ํŽธ์˜ ๋…ผ๋ฌธ์ด 1ํšŒ ์ด์ƒ ์ธ์šฉ์ด๋ฏ€๋กœ ์กฐ๊ฑด ์ถฉ์กฑx
2ํšŒ ์ธ์šฉ(2ํšŒ์ด์ƒ): 3,5,6 => 3๊ฐœ
        (2ํšŒ์ดํ•˜): 0,1 => 2๊ฐœ
-> 3ํŽธ์˜ ๋…ผ๋ฌธ์ด 2ํšŒ ์ด์ƒ ์ธ์šฉ์ด๋ฏ€๋กœ ์กฐ๊ฑด ์ถฉ์กฑx
3ํšŒ ์ธ์šฉ(3ํšŒ์ด์ƒ): 3,5,6 => 3๊ฐœ
        (3ํšŒ์ดํ•˜): 0,1,3 => 3๊ฐœ
-> 3ํŽธ์˜ ๋…ผ๋ฌธ์ด 3ํšŒ ์ด์ƒ ์ธ์šฉ์ด๋ฏ€๋กœ ์กฐ๊ฑด ์ถฉ์กฑo

 

1. "h๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์ด hํŽธ ์ด์ƒ"์ธ ์กฐ๊ฑด๋งŒ ์ถฉ์กฑ์‹œํ‚ค๊ธฐ

  • h๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ ๋…ผ๋ฌธ์˜ ์ˆ˜ ≥ h ์กฐ๊ฑด์„ ์ •ํ™•ํžˆ ๋ฐ˜์˜ํ•œ๋‹ค.
  • ์ด๋•Œ h๋Š” ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ citations.length - i๋กœ ๊ณ„์‚ฐํ•œ๋‹ค. 

 

2. ์กฐ๊ฑด ๋งŒ์กฑ ์‹œ ์ข…๋ฃŒ

  • if (citations[i] >= h) ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฝ์šฐ H-Index๋ฅผ ์ฐพ์•˜์œผ๋ฏ€๋กœ ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ

 



๐Ÿ“Œ ์ •๋‹ต ์ฝ”๋“œ

import java.util.*;

class Solution {
    public int solution(int[] citations) {
        int answer = 0;

        // ๋ฐฐ์—ด ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
        Arrays.sort(citations);
        // [0, 1, 3, 5, 6]

// citations[i]์—์„œ i๊ฐ’์„ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ๋…ผ๋ฌธ์˜ ์ˆ˜๋ฅผ ๊ฐ์†Œ์‹œํ‚ค๋ฉด์„œ ๋น„๊ต ํ–ˆ์„ ๋•Œ
// ์ธ์šฉ ํšŸ์ˆ˜๊ฐ€ ๋…ผ๋ฌธ์˜ ์ˆ˜ ์ด์ƒ์ด ๋˜์—ˆ์„ ๋•Œ์˜ ๋…ผ๋ฌธ์˜ ์ˆ˜๊ฐ€ H-Index๊ฐ€ ๋œ๋‹ค
        //     1ํšŒ ์ธ์šฉ(1ํšŒ์ด์ƒ): 1,3,5,6 => 4๊ฐœ
        //            (1ํšŒ์ดํ•˜): 0,1 => 2๊ฐœ
        // -> 4ํŽธ์˜ ๋…ผ๋ฌธ์ด 1ํšŒ ์ด์ƒ ์ธ์šฉ์ด๋ฏ€๋กœ ์กฐ๊ฑด ์ถฉ์กฑx
        //     2ํšŒ ์ธ์šฉ(2ํšŒ์ด์ƒ): 3,5,6 => 3๊ฐœ
        //            (2ํšŒ์ดํ•˜): 0,1 => 2๊ฐœ
        // -> 3ํŽธ์˜ ๋…ผ๋ฌธ์ด 2ํšŒ ์ด์ƒ ์ธ์šฉ์ด๋ฏ€๋กœ ์กฐ๊ฑด ์ถฉ์กฑx
        //     3ํšŒ ์ธ์šฉ(3ํšŒ์ด์ƒ): 3,5,6 => 3๊ฐœ
        //            (3ํšŒ์ดํ•˜): 0,1,3 => 3๊ฐœ
        // -> 3ํŽธ์˜ ๋…ผ๋ฌธ์ด 3ํšŒ ์ด์ƒ ์ธ์šฉ์ด๋ฏ€๋กœ ์กฐ๊ฑด ์ถฉ์กฑo
        for(int i = 0; i < citations.length; i++) {
            // ์ธ์šฉ๋œ ๋…ผ๋ฌธ ์ˆ˜
            // 5๊ฐœ -> 4๊ฐœ -> 3๊ฐœ -> 2๊ฐœ -> 1๊ฐœ ์ˆœ์œผ๋กœ
            int h = citations.length - i;

			// citations[i] ๋Š” 0 -> 1 -> 3 -> 5 -> 6 ์ˆœ์œผ๋กœ
            if(citations[i] >= h) {
                answer = h;
                break;
            }
        }
        return answer;
    }
}
๋ฐ˜์‘ํ˜•