๐Ÿ‘’ ๋ญ? JS๋กœ PS๋ฅผ ํ•œ๋‹ค๊ณ ?

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

์„ ๋‹ฌ 2023. 5. 10. 23:38
๋ฐ˜์‘ํ˜•

https://school.programmers.co.kr/learn/courses/30/lessons/42747

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

ํ’€์ด1

๋‹ค์Œ์€ ๋ง ๊ทธ๋Œ€๋กœ ๋ฌธ์ œ ๋‚ด์šฉ์„ ๊ทธ๋Œ€๋กœ ๊ตฌํ˜„ํ•œ ํ’€์ด

function solution(citations) {
    let ans=0;
    let h = citations.sort((a,b) => b-a)[0];
    while(h-- && h>0) {
        if(citations.filter(v => v>=h).length >= h) {
            ans = h;
            break;
        }
    }
    return ans;
}

 

ํ…Œ์ผ€ 16๋งŒ ํ‹€๋ฆฐ๋‹ค๋ฉด ์ธ์šฉ์ˆ˜๊ฐ€ ์ „๋ถ€ 0์ผ๋•Œ ๋‹ต์ด 0์œผ๋กœ ์ž˜ ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธํ•˜์ž...

 

 

ํ’€์ด2

์˜ˆ์ œ์—์„œ citations์„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋ฉด

index 0 1 2 3 4
value 6 5 3 1 0

6๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ๊ฑด 1๊ฐœ

5๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ๊ฑด 2๊ฐœ

4๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ๊ฑด 2๊ฐœ

3๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ๊ฑด 3๊ฐœ

2๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ๊ฑด 3๊ฐœ

1๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ๊ฑด 4๊ฐœ

0๋ฒˆ ์ด์ƒ ์ธ์šฉ๋œ๊ฑด 5๊ฐœ ์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค

 

์ฆ‰ citations[i] = v ๋Š” i+1๊ฐœ์˜ ๋…ผ๋ฌธ์ด v๋ฒˆ ์ด์ƒ ์ธ์šฉ๋˜์—ˆ๋‹ค๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค

์ด๋Ÿฐ ์‹์œผ๋กœ ํ•ด์„ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ณ„๋กœ ์—†์–ด์„œ ์ข€ ๋‚ฏ์„ค๊ธดํ–ˆ๋‹ค

 

h-index๋ฅผ ๋งŒ์กฑํ•˜๋ ค๋ฉด h๊ฐœ(์ด์ƒ)์˜ ๋…ผ๋ฌธ์ด h๋ฒˆ ์ด์ƒ ์ธ์šฉ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ

h <= citations[h-1] ์—ฌ์•ผํ•œ๋‹ค

 

๊ทธ๋ ‡๋‹ค๋ฉด h๋ฅผ 0๋ถ€ํ„ฐ ์˜ฌ๋ ค๊ฐ€๋ฉฐ ํ•ด๋‹น ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š” ์ˆœ๊ฐ„์˜ h-1 ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋ฉด

๊ทธ๊ฒŒ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ตœ๋Œ“๊ฐ’์ด ๋œ๋‹ค.

 

( ์ด๋•Œ citations ๋ฐฐ์—ด์„ ์•„์˜ˆ ๋ฒ—์–ด๋‚œ ๊ฒฝ์šฐ์—๋„ ๋ฐ˜๋ณต๋ฌธ์ด ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๊ฒŒํ•ด์•ผ

[10,10,10,10,10] ๊ฐ™์€ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์—์„œ ๋ฌดํ•œ๋ฃจํ”„์— ๋น ์ง€์ง€ ์•Š๋Š”๋‹ค )

function solution(citations) {
    citations.sort((a,b) => b-a);
    let h = 0;
    while(true) {
        if(h+1 > citations[h] || citations[h] === undefined) {
            return h;
        }
        h++;
    }
    return h;
}
๋ฐ˜์‘ํ˜•