๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

42747. H-Index

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - H-Index


๋ฌธ์ œ ์œ ํ˜•๋‚œ์ด๋„๊ฑธ๋ฆฐ ์‹œ๊ฐ„ํ•ด๊ฒฐ ์œ ๋ฌด(โœ…/โŒ)
์ •๋ ฌlv.220๋ถ„โœ…

์„ค๊ณ„ ๋ฐฉ๋ฒ•#

  • citations ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ๋‹ค.

  • reduce ํ•จ์ˆ˜๋กœ citations ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉฐ

  • h ๋ฅผ ์ตœ๋Œ€๊ฐ’ n (citations.length) ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ํ˜„์žฌ ๋…ผ๋ฌธ์˜ ์ธ์šฉ ํšŒ์ˆ˜๊ฐ€ h ๋ฒˆ ์ด์ƒ์ด๋ผ๋ฉด h ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ ,

    • ์ด ๋•Œ reduce ํ•จ์ˆ˜์˜ early break๋ฅผ ์œ„ํ•ด arr ๋ฅผ splice ํ•œ๋‹ค.
  • h ๋ฒˆ ๋ฏธ๋งŒ์ด๋ผ๋ฉด h ๋ฅผ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.

์ฝ”๋“œ#

function solution(citations) {    return citations        .sort((a, b) => a - b)        .slice()        .reduce((h, cur, _, arr) => {            if (cur >= h) {                arr.splice(1);                return h;            }            return --h;        }, citations.length);}

์‹œ๊ฐ„ ๋ณต์žก๋„#

  • ์ •๋ ฌ : O(NlogN)

  • ์ˆœํšŒ : O(N)

โ†’ O(NlogN)

์–ด๋ ค์› ๋˜ ์ #

  • ์ฒ˜์Œ์— ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์‰ฝ๊ฒŒ ๋– ์˜ฌ๋ž๊ณ , ์ ์ค‘ํ–ˆ์ง€๋งŒ, ๋ฐฉ๋ฒ•์ด ๋– ์˜ค๋ฅด์ง€ ์•Š์•˜๋‹ค๋ฉด ํ—ค๋งธ์„ ๊ฒƒ ๊ฐ™๋‹ค.

  • ๋‹จํ•ญ ์ฆ๊ฐ ์—ฐ์‚ฐ์ž์—์„œ --x ๋˜๋Š” ++x ๋Š” ํ”ผ์—ฐ์‚ฐ์ž์— ์—ฐ์‚ฐ์„ ์ ์šฉํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ, x-- ๋˜๋Š” x++ ๋Š” ํ”ผ์—ฐ์‚ฐ์ž์— ์—ฐ์‚ฐ์„ ์ ์šฉํ•˜๊ธฐ ์ „ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๊ฒƒ๋„์ƒˆ๋กœ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. (๊ทธ๋ƒฅ ๋จผ์ € ์ ์šฉํ•œ๋‹ค, ๋‚˜์ค‘์— ์ ์šฉํ•œ๋‹ค ๋กœ๋งŒ ์ดํ•ดํ–ˆ์—ˆ์Œ)

์ฐธ๊ณ ์ž๋ฃŒ#

How to early break reduce() method?