programmers.co.kr/learn/courses/30/lessons/42747
์ฝ๋
import java.util.Arrays;
class Solution {
public int solution(int[] citations) {
int answer = 0;
int size = citations.length;
Arrays.sort(citations);
int max = max(citations);
for (int i = 0; i < max; i++) {
int higherThanH = 0;
if (contains(citations, i)) {
higherThanH = 1;
}
for (int j = 0; j < size; j++) {
if (citations[j] > i) {
higherThanH++;
}
}
if (higherThanH >= i) {
answer = i;
}
}
return answer;
}
private static int max(int[] arr) {
return arr[arr.length - 1];
}
private static boolean contains(int[] arr, int element) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] == element) {
return true;
}
}
return false;
}
}
ํ์ด
๋ฌธ์ ๋ฅผ ์ดํดํ๋๋ฐ๋ ์๊ฐ์ด ๊ฝค ๊ฑธ๋ฆฐ๊ฒ ๊ฐ๋ค...
์ผ๋จ ๋ฌธ์ ๋ถ๋ฅ๊ฐ ์ ๋ ฌ์ด์ด์, ์ ๋ ฌ์ ํตํด ๋ฌธ์ ๋ฅผ ์ข ๋ ์ฝ๊ฒ ํ์ ์๋ ๊ฒ ๊ฐ๋ค.
์ด๋ค ๊ณผํ์๊ฐ ๋ฐํํ ๋ ผ๋ฌธ n ํธ ์ค, h๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ์ด h ํธ ์ด์์ด๊ณ , ๋๋จธ์ง๋ h๋ฒ ์ดํ ์ธ์ฉ => h์ ์ต๋๊ฐ
์ ๋ง์ด ์ฌ์ค ๊ต์ฅํ ํท๊ฐ๋ ธ๋ค... ๋ฌธ์ ์์ ์ฃผ์ด์ง ๋ฐฐ์ด(citations)์ ์ ๋ ฌํ๋ฉด ์๋์ ๊ฐ๋ค.
์ ๋ฐฐ์ด์์ ๋ ผ๋ฌธ์ ์(n)๋ ์ด 5ํธ์ด๊ณ , 3์ ๊ธฐ์ค์ผ๋ก ํ๋ฉด (h = 3)
3๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ = 3 , ๋๋จธ์ง๋ 3๋ฒ ์ดํ ์ธ์ฉ(์ ๋ ฌ์ ํตํด ์ด๋ถ๋ถ์ ํญ์ True) ์ผ๋ก ๋ง์กฑํด์ H-Index๋ 3์ด๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํด์ผ ํ ์ ์ด, H-Index์ ํ๋ณด๊ฐ ๋ ์ ์๋ ์๋ ๋ฐฐ์ด์ ์๋ ์๊ฐ ์ ๋ถ๋ ์๋๋ค.
๋ง์ฝ ์์ ๊ฐ์ด citations์ ๋ฐฐ์ด์ ์ ๋ ฌ์ด 0, 1, 3, 5, 6, 7, 8 ์ผ ๊ฒฝ์ฐ ์ต๋๊ฐ์ 3์ด ๋ ๊ฑฐ๋ผ๊ณ ์๊ฐ์ ํ์ง๋ง,
๋ฐฐ์ด์ ์กด์ฌํ์ง ์๋ 4๋ฅผ ๋์ ํด๋ณด๋ฉด 4ํธ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ์ด 4๊ฐ(5, 6, 7, 8) ์ด๋ฏ๋ก
H-Index๋ 4๊ฐ ๋๋ค.
๋ฐ๋ผ์ h๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ์ ํ๋จํ ๋๋, ๋ฐฐ์ด์ ์ต์๊ฐ ~ ๋ฐฐ์ด์ ์ต๋๊ฐ ๊น์ง์ ์๋ฅผ ๊ธฐ์ค์ผ๋ก H-Index๋ฅผ ๊ตฌํด์ผ ํ๋ค.
๋ฌธ์ ์์ ์ฃผ์ด์ง ๋ ผ๋ฌธ๋ณ ์ธ์ฉ ํ์๋ Max๊ฐ 10,000ํ ์ด๋ฏ๋ก ์์ ํ์์ ํ๋๋ผ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
์ฝ๋ ํ์ด
- ๋จผ์ ๋ฐฐ์ด์ ์ ๋ ฌ๊ณผ, ๋ฐฐ์ด์์ ์ต๋๊ฐ์ ์ฐพ๋๋ค.
Arrays.sort(citations);
int max = max(citations);
private static int max(int[] arr) {
return arr[arr.length - 1];
}
- ๊ทธ ํ ์ฝ๋์์ h ๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ์์ h์ ๊ฐ์ for๋ฌธ์ ๋ณ์์ธ i๋ก ์ฌ์ฉํ๋ค.
์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด, ํ์ฌ ๋น๊ตํ๊ณ ์ ํ๋ h์ ๊ฐ์ด ๋ฐฐ์ด์ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ๋ h ๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ์ด๋ผ๊ณ ํ ์ ์์ผ๋ฏ๋ก ์ด๊ธฐ๊ฐ์ 0์ผ๋ก, ๋ฐฐ์ด์ ์กด์ฌํ ๊ฒฝ์ฐ ์ด๊ธฐ๊ฐ์ 1๋ก ์ค์ ํ๋ค.
int higherThanH = 0;
if (contains(citations, i)) {
higherThanH = 1;
}
- ๋ค์์ผ๋ก ๋ด๋ถ for๋ฌธ์์ ๋น๊ตํ h์ ๊ฐ๋ณด๋ค ๋ฐฐ์ด์ ๊ฐ์ด ํด ๊ฒฝ์ฐ(h๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ) higherThanH +1์ ํด์ค๋ค.
for (int j = 0; j < size; j++) {
if (citations[j] > i) {
higherThanH++;
}
}
- ์ต์ข ์ ์ผ๋ก h๋ฒ ์ด์ ์ธ์ฉ๋ ๋ ผ๋ฌธ์ด h ํธ ์ด์์ผ ๊ฒฝ์ฐ ==> H-Index์ ๊ฐ์ ๋น๊ตํ h(for๋ฌธ์ i๋ณ์) ๊ฐ์ผ๋ก ๊ฐฑ์ ํ๋ค.
if (higherThanH >= i) {
answer = i;
}
๋ค๋ฅธ ์ฝ๋
import java.util.Arrays;
class Solution {
public int solution(int[] citations) {
int answer = 0;
Arrays.sort(citations);
for(int i=0; i<citations.length; i++){
int smaller = Math.min(citations[i], citations.length-i);
answer = Math.max(answer, smaller);
}
return answer;
}
}
ํ๋ฉ ...... ๋จ์ํ์ง๋ง ์ ์ดํด๊ฐ ์๋๋ค ..;;
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ๋ฒ ์คํธ์จ๋ฒ(ํด์) (0) | 2021.06.04 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ํคํจ๋ ๋๋ฅด๊ธฐ(2020 ์นด์นด์ค ์ธํด์ญ) (1) | 2020.10.03 |
ํ๋ก๊ทธ๋๋จธ์ค[Java] - ์ผ๊ฐ ๋ฌํฝ์ด (0) | 2020.09.26 |
[Programmers] - ๋ ๊ฐ ๋ฝ์์ ๋ํ๊ธฐ (0) | 2020.09.20 |
[SW Expert Academy] - (D2)1974. ์ค๋์ฟ ๊ฒ์ฆ (0) | 2020.08.10 |
๋๊ธ