[PS] 99ํด๋ฝ ์ฝํ ์คํฐ๋ 12์ผ์ฐจ TIL (H-index)
ํ๊ทธ: 99ํด๋ฝ, PS, TIL, ์ ๋ ฌ, ์ฝ๋ฉํ ์คํธ์ค๋น, ํญํด99
์นดํ ๊ณ ๋ฆฌ: PS
๋ฌธ์
๋ฐํํ ๋
ผ๋ฌธ ์ค h
๋ฒ ์ด์ ์ธ์ฉ๋ ๋
ผ๋ฌธ์ ๊ฐฏ์๊ฐ ๋ฐฐ์ด์ ๋ช ๊ฐ ์๋์ง ํ์ธ ํ ์ต๋ ๊ฐ์ ๋ฆฌํดํด์ผ ํ๋ค.
์ ๋ ฌํ์ง ์๊ณ ํธ๋ ๋ฐฉ๋ฒ
๋
ผ๋ฌธ์ ์ธ์ฉ ํ์๊ฐ ํ์ฌ ๋ฐฐ์ด์์ ๋ช๋ฒ ๋์๋์ง ๊ธฐ๋กํ count
๋ฐฐ์ด์ ๋ง๋ ๋ค.
์ด ๋ฐฐ์ด์ ์ธ๋ฑ์ค๊ฐ ์ธ์ฉ ํ์(h)์ด๋ฉฐ, ๊ฐ์ ํด๋น ์ธ์ฉ ํ์์ ํด๋นํ๋ ๋
ผ๋ฌธ์ ์๊ฐ ๋๋ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public int solution(int[] citations) {
int n = citations.length;
int[] count = new int[n + 1];
// ์ธ์ฉ ํ์ ์นด์ดํธ
for (int c : citations) {
if (c >= n) {
count[n]++;
} else {
count[c]++;
}
}
// H-index ๊ณ์ฐ
int total = 0;
for (int i = n; i >= 0; i--) {
total += count[i];
if (total >= i) {
return i;
}
}
return 0;
}
}
count ๋ฐฐ์ด์ ๊ฐ ๋
ผ๋ฌธ์ ์ธ์ฉํ์์ ๋ํ ์นด์ดํธ๋ฅผ ์ ์ฅํ๋ ์ญํ ์ด๊ธฐ ๋๋ฌธ์ ํฌ๊ธฐ๋ n + 1 ๋ก ํ๋ค.
๋
ผ๋ฌธ์ ์ธ์ฉํ์๊ฐ ๋
ผ๋ฌธ ์๋ฅผ ์ด๊ณผํ๋ ๊ฒฝ์ฐ์ count[n]
์ ์ ์ฅ๋๋ค.
์๋ฅผ ๋ค์ด, [3, 0, 6, 1, 5]
๊ฐ ์
๋ ฅ์ผ๋ก ์ฃผ์ด์ก์๋ count ๋ฐฐ์ด์ ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์ฑ์์ง๋ค.
1
2
// 3 ์์น count+1 => 0 ์์น count+1 => 6 ์์น count+1 (5์์น) => 1 ์์น count+1 => 5 ์์น count+1
[0, 0, 0, 1, 0, 0] => [1, 0, 0, 1, 0, 0] => [1, 0, 0, 1, 0, 1] => [1, 1, 0, 1, 0, 1] => [1, 1, 0, 1, 0, 2]
- 0๋ฒ ์ธ์ฉ๋ ๋ ผ๋ฌธ ๊ฐฏ์ : 1
- 1๋ฒ ์ธ์ฉ๋ ๋ ผ๋ฌธ ๊ฐฏ์ : 1
- 3๋ฒ ์ธ์ฉ๋ ๋ ผ๋ฌธ ๊ฐฏ์ : 1
- 5๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ ๊ฐฏ์ : 2
์นด์ดํธ ๊ฐ์ ๋ค์์ ๋ถํฐ ๋ํ๋ฉด 3๋ฒ ์ด์ ์ธ์ฉ๋ ๋
ผ๋ฌธ ๊ฐฏ์๊ฐ 3์ผ๋
์ด ๊ฐ์ด h-index ๊ฐ ๋๋ค.
์ ๋ ฌ ํ ํ์ด
ํฐ ์ธ์ฉ ํ์๊ฐ ์์ ์ธ์ฉํ์๋ฅผ ํฌํจํ๋ฏ๋ก ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค.
h | n |
---|---|
6 | 1 |
5 | 2 |
3 | 3 |
1 | 4 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public int solution(int[] citations) {
int answer = 0;
Integer[] array = Arrays.stream(citations).boxed().toArray(Integer[]::new);
Arrays.sort(array, Collections.reverseOrder());
for (int i = 0; i < array.length; i++) {
if (array[i] >= i + 1) {
answer = i + 1;
} else {
break;
}
}
return answer;
}
}
๋๊ธ๋จ๊ธฐ๊ธฐ