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

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

Study/Coding Test

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

Jieunny 2023. 3. 2. 16:51

๐Ÿ“Œ  ๋ฌธ์ œ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํŒ€์—์„œ๋Š” ๊ธฐ๋Šฅ ๊ฐœ์„  ์ž‘์—…์„ ์ˆ˜ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค. ๊ฐ ๊ธฐ๋Šฅ์€ ์ง„๋„๊ฐ€ 100%์ผ ๋•Œ ์„œ๋น„์Šค์— ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜, ๊ฐ ๊ธฐ๋Šฅ์˜ ๊ฐœ๋ฐœ์†๋„๋Š” ๋ชจ๋‘ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋’ค์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์•ž์— ์žˆ๋Š” ๊ธฐ๋Šฅ๋ณด๋‹ค ๋จผ์ € ๊ฐœ๋ฐœ๋  ์ˆ˜ ์žˆ๊ณ , ์ด๋•Œ ๋’ค์— ์žˆ๋Š” ๊ธฐ๋Šฅ์€ ์•ž์— ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋  ๋•Œ ํ•จ๊ป˜ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

๋จผ์ € ๋ฐฐํฌ๋˜์–ด์•ผ ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ž‘์—…์˜ ์ง„๋„๊ฐ€ ์ ํžŒ ์ •์ˆ˜ ๋ฐฐ์—ด progresses์™€ ๊ฐ ์ž‘์—…์˜ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ์ ํžŒ ์ •์ˆ˜ ๋ฐฐ์—ด speeds๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ๊ฐ ๋ฐฐํฌ๋งˆ๋‹ค ๋ช‡ ๊ฐœ์˜ ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋˜๋Š”์ง€๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜์„ธ์š”.

์ œํ•œ ์‚ฌํ•ญ

  • ์ž‘์—…์˜ ๊ฐœ์ˆ˜(progresses, speeds๋ฐฐ์—ด์˜ ๊ธธ์ด)๋Š” 100๊ฐœ ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • ์ž‘์—… ์ง„๋„๋Š” 100 ๋ฏธ๋งŒ์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์ž‘์—… ์†๋„๋Š” 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ๋Š” ํ•˜๋ฃจ์— ํ•œ ๋ฒˆ๋งŒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•˜๋ฃจ์˜ ๋์— ์ด๋ฃจ์–ด์ง„๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ง„๋„์œจ์ด 95%์ธ ์ž‘์—…์˜ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ํ•˜๋ฃจ์— 4%๋ผ๋ฉด ๋ฐฐํฌ๋Š” 2์ผ ๋’ค์— ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

 

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

100%์—์„œ ํ˜„์žฌ ์ง„ํ–‰ %๋ฅผ ๋นผ๊ณ , ํ•˜๋ฃจ์— ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…๋Ÿ‰์œผ๋กœ ๋‚˜๋ˆ ์„œ ๊ฐ task๋งˆ๋‹ค ์™„๋ฃŒ๋˜๊ธฐ๊นŒ์ง€ ๋‚จ์€ ์ผ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.

์•ž ์ˆœ์„œ ์ผ์ด ๋๋‚˜์ง€ ์•Š์œผ๋ฉด ๋’ท ์ˆœ์„œ ์ผ์ด ์™„๋ฃŒ๋˜์–ด๋„ ๋ฐฐํฌํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋‹จ ๋งจ ์ฒ˜์Œ task์˜ ๋‚จ์€ ๋‚ ์„ ์Šคํƒ์— ๋„ฃ๋Š”๋‹ค.

๊ทธ๋ฆฌ๊ณ  2๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ๋Œ๋ฉด์„œ, ๋งจ ์ฒ˜์Œ ์ผ๋ณด๋‹ค ์ ๊ฒŒ ๋‚จ์•˜์œผ๋ฉด ์Šคํƒ์— ๋„ฃ๊ณ , ๋งŒ์•ฝ ๋งจ ์ฒ˜์Œ ์ผ๋ณด๋‹ค ๋งŽ์ด ๋‚จ์€ ์ผ์„ ๋งŒ๋‚˜๋ฉด ์ผ๋‹จ ์Šคํƒ์„ ๋‹ค ๋น„์šฐ๊ณ , ๋น„์šด ์Šคํƒ์˜ ๊ธธ์ด๋งŒํผ answer์— pushํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค์‹œ ๋งจ ์ฒ˜์Œ ์ผ๋ณด๋‹ค ๋งŽ์ด ๋‚จ์€ ์ผ์„ ์Šคํƒ์— pushํ•œ๋‹ค.

์ด ๊ณผ์ •์„ ๋‹ค ๊ฑฐ์ณค์„ ๋•Œ ์Šคํƒ์ด ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด, ์Šคํƒ์— ๋‚จ์€ ์ผ๋“ค์€ ํ•œ๋ฒˆ์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค ๋นผ์ฃผ๊ณ  ๊ทธ ๊ธธ์ด๋งŒํผ answer์— pushํ•œ๋‹ค.

 

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

function solution(progresses, speeds) {
  var answer = [];
  let leftDay = [];
  let stk = [];
  for(let i=0; i<progresses.length; i++){
    leftDay.push(Math.ceil((100-progresses[i]) / speeds[i]));
  }

  stk.push(leftDay[0]);
  for(let i=1; i<leftDay.length; i++){
    if(leftDay[i] <= stk[0] || stk.length === 0) {
      stk.push(leftDay[i]);
    }
    else if(leftDay[i] > stk[0]) {
      let complete = stk.length;
      stk.splice(0, complete);
      answer.push(complete)
      stk.push(leftDay[i]);
    }
  }
  if(stk.length > 0) answer.push(stk.length);

  return answer;
}