๐Ÿ’ป์šฉ๋‡ฝ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป
article thumbnail
๋ฐ˜์‘ํ˜•

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ธฐ๋Šฅ๊ฐœ๋ฐœ ๋ฌธ์ œ ํ’€์ด

๐Ÿ“– ๋“ค์–ด๊ฐ€๋ฉฐ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ์Šคํƒ(Stack) ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜๋Š” '๊ธฐ๋Šฅ๊ฐœ๋ฐœ' ๋ฌธ์ œ(LV.2) ํ’€์ด๋ฅผ ํ•˜๊ฒ ๋‹ค.

โ“ ๋ฌธ์ œ 

๋ฌธ์ œ ์„ค๋ช…

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

์ œํ•œ์‚ฌํ•ญ

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

์ž…์ถœ๋ ฅ ์˜ˆ

progresses completion return
[93, 30, 55] [1, 30, 5] [2, 1]
[95, 90, 99, 99, 80, 99] [1, 1, 1, 1, 1, 1] [1, 3, 2]

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

์ž…์ถœ๋ ฅ ์˜ˆ #1
์ฒซ ๋ฒˆ์งธ ๊ธฐ๋Šฅ์€ 93% ์™„๋ฃŒ๋˜์–ด ์žˆ๊ณ  ํ•˜๋ฃจ์— 1%์”ฉ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ 7์ผ๊ฐ„ ์ž‘์—… ํ›„ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋‘ ๋ฒˆ์งธ ๊ธฐ๋Šฅ์€ 30%๊ฐ€ ์™„๋ฃŒ๋˜์–ด ์žˆ๊ณ  ํ•˜๋ฃจ์— 30%์”ฉ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ 3์ผ๊ฐ„ ์ž‘์—… ํ›„ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ „ ์ฒซ ๋ฒˆ์งธ ๊ธฐ๋Šฅ์ด ์•„์ง ์™„์„ฑ๋œ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒซ ๋ฒˆ์งธ ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋˜๋Š” 7์ผ์งธ ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.
์„ธ ๋ฒˆ์งธ ๊ธฐ๋Šฅ์€ 55%๊ฐ€ ์™„๋ฃŒ๋˜์–ด ์žˆ๊ณ  ํ•˜๋ฃจ์— 5%์”ฉ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ 9์ผ๊ฐ„ ์ž‘์—… ํ›„ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ 7์ผ์งธ์— 2๊ฐœ์˜ ๊ธฐ๋Šฅ, 9์ผ์งธ์— 1๊ฐœ์˜ ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2
๋ชจ๋“  ๊ธฐ๋Šฅ์ด ํ•˜๋ฃจ์— 1%์”ฉ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, ์ž‘์—…์ด ๋๋‚˜๊ธฐ๊นŒ์ง€ ๋‚จ์€ ์ผ์ˆ˜๋Š” ๊ฐ๊ฐ 5์ผ, 10์ผ, 1์ผ, 1์ผ, 20์ผ, 1์ผ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ๊ธฐ๋Šฅ์ด ๋จผ์ € ์™„์„ฑ๋˜์—ˆ๋”๋ผ๋„ ์•ž์— ์žˆ๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์™„์„ฑ๋˜์ง€ ์•Š์œผ๋ฉด ๋ฐฐํฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ 5์ผ์งธ์— 1๊ฐœ์˜ ๊ธฐ๋Šฅ, 10์ผ์งธ์— 3๊ฐœ์˜ ๊ธฐ๋Šฅ, 20์ผ์งธ์— 2๊ฐœ์˜ ๊ธฐ๋Šฅ์ด ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ํ’€์ด

๋จผ์ € ์ž‘์—…๋“ค์ด ๋ฉฐ์น ์— ๊ฑธ์ณ์„œ ์™„๋ฃŒ๊ฐ€ ๋˜๋Š”์ง€ ์•Œ๊ธฐ ์œ„ํ•ด์„œ,

100% ์™„๋ฃŒ ๊ธฐ์ค€์œผ๋กœ '(100 - ์ง„๋„) / ์†๋„' ๊ณต์‹์„ ์ด์šฉํ•˜๋ฉด ๊ฐ ์ž‘์—…๋“ค์ด ๋ฉฐ์น ์— ๊ฑธ์ณ์„œ ์™„๋ฃŒ๊ฐ€ ๋˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ฐœ๋ฐœ ์ง„๋„(progresses) 30์˜ ๊ฐœ๋ฐœ์†๋„(speeds) 30์„ ์˜ˆ์‹œ๋กœ ํ•˜๋ฉด ((100-30)/30)์˜ ๊ฐ’์€ 2.3333... ์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

์—ฌ๊ธฐ์„œ ์†Œ์ˆ˜์ ์ด ๋‚˜์˜ค๋ฉด ์˜ฌ๋ฆผ(Ceil) ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค. 2.3์ผ์ด๋ฉด ์ตœ์†Œ 3์ผ์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ตœ์†Œํ•œ ์ž‘์—…์— ํ•„์š”ํ•œ ์ผ์ˆ˜๊ฐ€ 1์ผ์ด๋ฏ€๋กœ, 1๋กœ ์ดˆ๊ธฐํ™”ํ•œ count ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑ ํ›„ ์ด ๊ฐ’์„ ํ†ตํ•ด์„œ answer ๋ฐฐ์—ด์— ๋„ฃ์–ด์ฃผ๋„๋ก ํ–ˆ๋‹ค.

์ตœ๋Œ€ ๋งŽ์ด ๊ฑธ๋ฆฌ๋Š” ์ผ ์ˆ˜ maxDay ๋ณ€์ˆ˜๋ฅผ ์ „์— ๊ตฌํ•œ days ๋ณ€์ˆ˜ ์ฒซ๋ฒˆ์งธ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•ด์ฃผ์—ˆ๋‹ค.

์ตœ๋Œ€ ๋งŽ์ด ๊ฑธ๋ฆฌ๋Š” ์ผ ์ˆ˜๋ฅผ ๋น„๊ตํ•˜๋ฉด์„œ counting์„ ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์•„๋‹ค.

 

๊ทธ๋ฆฌ๊ณ , days ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋‹ค.

for๋ฌธ์˜ ์ดˆ๊ธฐ๊ฐ’์€ 1๋กœ ์ฃผ์—ˆ๋Š”๋ฐ ์ด์œ ๋Š” ์œ„์— maxDay ๋ณ€์ˆ˜์—์„œ days ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ์ดˆ๊ธฐ ๊ฐ’์œผ๋กœ ํ• ๋‹นํ•ด์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ž˜์„œ ํ˜„์žฌ ์ˆœํšŒํ•˜๋Š” ๋ฐฐ์—ด ์ธ๋ฑ์Šค์˜ ๊ฐ’์ด maxDay๋ณด๋‹ค ์ž‘์œผ๋ฉด count๋ฅผ ์ฆ๊ฐ€์‹œ์ผœ์ฃผ๊ณ ,

maxDay๋ณด๋‹ค ํฌ๋‹ค๋ฉด maxDay์˜ ๊ฐ’์„ ํ˜„์žฌ ๋ฐฐ์—ด ์ธ๋ฑ์Šค์˜ ๊ฐ’์œผ๋กœ ํ• ๋‹นํ•ด์ฃผ๊ณ  answer์— ์ง€๊ธˆ๊นŒ์ง€ counting ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” count๋ณ€์ˆ˜์˜ ๊ฐ’์„ answer์— push ํ•ด์คŒ์œผ๋กœ์จ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ณ  count ๋ณ€์ˆ˜์˜ ๊ฐ’์€ ๋‹ค์‹œ 1๋กœ ์ดˆ๊ธฐํ™”ํ•ด์„œ counting์„ 1๋ถ€ํ„ฐ ๋‹ค์‹œ ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ํ•ด์ฃผ์—ˆ๋‹ค.

 

for๋ฌธ์ด ๋๋‚˜๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚จ์•„์žˆ๋Š” count ๋ณ€์ˆ˜์˜ ๊ฐ’์„ answer ๋ฐฐ์—ด์— push ํ•ด์ฃผ์—ˆ๋‹ค. 

ํ’€์ด ์ฝ”๋“œ

function solution(progresses, speeds) {
  const answer = [];
  const days = progresses.map((progress, index) =>
    Math.ceil((100 - progress) / speeds[index])
  );
  let count = 1;
  let maxDay = days[0];

  for (let i = 1; i < days.length; i++) {
    if (days[i] <= maxDay) {
      count++;
    } else {
      maxDay = days[i];
      answer.push(count);
      count = 1;
    }
  }

  answer.push(count);

  return answer;
}

โœ” ์ฑ„์ 

์ œ์ถœ ๊ฒฐ๊ณผ

๋ฐ˜์‘ํ˜•
profile

๐Ÿ’ป์šฉ๋‡ฝ ๊ฐœ๋ฐœ ๋…ธํŠธ๐Ÿ’ป

@์šฉ๋‡ฝ

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!