Jieunny์˜ ๋ธ”๋กœ๊ทธ

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - H-index ๋ณธ๋ฌธ

Study/Coding Test

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

Jieunny 2023. 2. 22. 09:50

๐Ÿ“Œ  ๋ฌธ์ œ

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

 

๐Ÿ’ก  ์•„์ด๋””์–ด

๋ฌธ์ œ๊ฐ€ ์ดํ•ด๊ฐ€ ์•ˆ๋˜์„œ ์งˆ๋ฌธ๋„ ๋ณด๊ณ  ๊ตฌ๊ธ€๋ง๋„ ํ•ด๋ดค๋‹ค.

https://postechlibrary.tistory.com/489 ์ด ๊ธ€์„ ๋ณด๊ณ  H-index๋Š” ๋ญ๊ณ , ์–ด๋–ป๊ฒŒ ๊ตฌํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค.

 

H-index : R์—ฐ๊ตฌ์ž๊ฐ€ ์ถœํŒํ•œ ์ „์ฒด ๋…ผ๋ฌธ* ๊ฐ€์šด๋ฐ, ํ”ผ์ธ์šฉํšŒ์ˆ˜๊ฐ€ h์ด์ƒ์ธ ๋…ผ๋ฌธ์ด h๊ฐœ๋ฅผ ์ฑ„์šฐ๋Š” ์ˆ˜์น˜

H-index ๊ตฌํ•˜๊ธฐ : ์ž์‹ ์˜ ์ „์ฒด ๋…ผ๋ฌธ์„ ๋งŽ์ด ์ธ์šฉ๋œ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค -> ์™ผ์ชฝ์˜ ์ˆœ๋ฒˆ(No.)๊ณผ ์˜ค๋ฅธ์ชฝ์˜ ํ”ผ์ธ์šฉ(Total Citations), ๋‘ ์ˆซ์ž๋ฅผ ๋น„๊ตํ•˜๋ฉฐ ๋‚ด๋ ค๊ฐ„๋‹ค -> ์ด๋•Œ, ๋‘ ์ˆซ์ž๊ฐ€ ๊ฐ™์•„์ง€๊ฑฐ๋‚˜ ๋น„๊ตํ–ˆ์„ ๋•Œ Total Citations๊ฐ€ ์ˆœ๋ฒˆ๋ณด๋‹ค ๋” ์ž‘์•„์ง€๊ธฐ ์‹œ์ž‘ํ•˜๋Š” ์ง์ „์˜ ์ˆซ์ž(No.)๋ฅผ ์ฐพ๋Š”๋‹ค.

๊ทธ๋Œ€๋กœ๋งŒ ๊ตฌํ˜„ํ•˜๋ฉด ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 9๋ฒˆ, 16๋ฒˆ์ด ์‹คํŒจํ•œ๋‹ค.

 

9๋ฒˆ์€ [10, 10, 10, 10, 10] / 16๋ฒˆ์€ [0, 0, 0, 0, 0]

for๋ฌธ์„ ๋๊นŒ์ง€ ๋Œ์•˜์„ ๋•Œ๋„ ๋‹ต์ด ๋‚˜์˜ค์ง€ ์•Š์•˜์„ ๊ฒฝ์šฐ์—๋Š” ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๊ณ , ๋ชจ๋“  ๊ฐ’์ด 0์ผ ๋•Œ๋Š” 0์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

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

function solution(citations) {
  var answer = 0;
  let forCount = 0;
  // for๋ฌธ์ด ๋ฐฐ์—ด ๊ธธ์ด๋งŒํผ ๋Œ์•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜
  citations.sort((a, b) => b - a);

  for(let i=0; i<citations.length; i++){
    forCount++;
    if(citations[i] <= i){
      answer = i;
      break;
    }
  }

  if(forCount === citations.length && answer === 0) answer = citations.length;
  // for๋ฌธ์ด ๋๊นŒ์ง€ ๋Œ์•˜๊ณ , answer์€ 0 ์ธ ๊ฒฝ์šฐ์— ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•œ๋‹ค.
  return answer; 
}