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

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

Study/Coding Test

[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์ฝœ๋ผ๋ฌธ์ œ

Jieunny 2023. 1. 20. 09:57

๐Ÿ“Œ ๋ฌธ์ œ

์ •๋‹ต์€ ์•„๋ฌด์—๊ฒŒ๋„ ๋งํ•˜์ง€ ๋งˆ์„ธ์š”.
์ฝœ๋ผ ๋นˆ ๋ณ‘ 2๊ฐœ๋ฅผ ๊ฐ€์ ธ๋‹ค์ฃผ๋ฉด ์ฝœ๋ผ 1๋ณ‘์„ ์ฃผ๋Š” ๋งˆํŠธ๊ฐ€ ์žˆ๋‹ค. ๋นˆ ๋ณ‘ 20๊ฐœ๋ฅผ ๊ฐ€์ ธ๋‹ค์ฃผ๋ฉด ๋ช‡ ๋ณ‘์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”๊ฐ€?
๋‹จ, ๋ณด์œ  ์ค‘์ธ ๋นˆ ๋ณ‘์ด 2๊ฐœ ๋ฏธ๋งŒ์ด๋ฉด, ์ฝœ๋ผ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์—†๋‹ค.

๋ฌธ์ œ๋ฅผ ์—ด์‹ฌํžˆ ํ’€๋˜ ์ƒ๋นˆ์ด๋Š” ์ผ๋ฐ˜ํ™”๋œ ์ฝœ๋ผ ๋ฌธ์ œ๋ฅผ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋นˆ ๋ณ‘ a๊ฐœ๋ฅผ ๊ฐ€์ ธ๋‹ค์ฃผ๋ฉด ์ฝœ๋ผ b๋ณ‘์„ ์ฃผ๋Š” ๋งˆํŠธ๊ฐ€ ์žˆ์„ ๋•Œ, ๋นˆ ๋ณ‘ n๊ฐœ๋ฅผ ๊ฐ€์ ธ๋‹ค์ฃผ๋ฉด ๋ช‡ ๋ณ‘์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ณ„์‚ฐํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ์ฝœ๋ผ ๋ฌธ์ œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ณด์œ  ์ค‘์ธ ๋นˆ ๋ณ‘์ด a๊ฐœ ๋ฏธ๋งŒ์ด๋ฉด, ์ถ”๊ฐ€์ ์œผ๋กœ ๋นˆ ๋ณ‘์„ ๋ฐ›์„ ์ˆœ ์—†์Šต๋‹ˆ๋‹ค. ์ƒ๋นˆ์ด๋Š” ์—ด์‹ฌํžˆ ๊ณ ์‹ฌํ–ˆ์ง€๋งŒ, ์ผ๋ฐ˜ํ™”๋œ ์ฝœ๋ผ ๋ฌธ์ œ์˜ ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒ๋นˆ์ด๋ฅผ ๋„์™€, ์ผ๋ฐ˜ํ™”๋œ ์ฝœ๋ผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด ์ฃผ์„ธ์š”.

์ฝœ๋ผ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ๋งˆํŠธ์— ์ฃผ์–ด์•ผ ํ•˜๋Š” ๋ณ‘ ์ˆ˜ a, ๋นˆ ๋ณ‘ a๊ฐœ๋ฅผ ๊ฐ€์ ธ๋‹ค ์ฃผ๋ฉด ๋งˆํŠธ๊ฐ€ ์ฃผ๋Š” ์ฝœ๋ผ ๋ณ‘ ์ˆ˜ b, ์ƒ๋นˆ์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋นˆ ๋ณ‘์˜ ๊ฐœ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ƒ๋นˆ์ด๊ฐ€ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ฝœ๋ผ์˜ ๋ณ‘ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

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

function solution(a, b, n) {
  var answer = 0;
  let remainder = 0;
  let remainderSum = 0;

  
  while(n >= a){
    remainder = Math.floor(n % a);
    if(remainder !== 0){
      remainderSum += remainder;
    }
    n = Math.floor(n / a) * b;
    answer += n;
  }

  if(n < a && remainderSum > 0){
    while(remainderSum + n >= a){
      n = Math.floor((n + remainderSum) / a) * b;
      answer += n;
      remainderSum = Math.floor((n + remainderSum) % a);
    }
  }

  return answer;
}

โžฐ ์ฒ˜์Œ์— ์ด๋ ‡๊ฒŒ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ 3๊ฐœ์˜ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๊ฐ€ ํ†ต๊ณผ๊ฐ€ ์•ˆ๋ฌ๋‹ค.

ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋Š” ๋ณผ ์ˆ˜ ์—†์œผ๋‹ˆ ์–ด๋””๊ฐ€ ์ž˜๋ชป ๋œ์ง€ ์ฐพ๊ธฐ๊ฐ€ ๋„ˆ๋ฌด ํž˜๋“ค๋‹คใ…œใ… ..

๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ์ฐพ์•„๋ณด๋‹ˆ๊นŒ ๋‹ค๋“ค ๋ฐ‘์˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ’€์—ˆ๋”๋ผ.

ํ’€์ด ๋ฐฉ๋ฒ•์€ ๋‚˜๋ž‘ ๊ฐ™์€๋ฐ ์ฝ”๋“œ๋กœ ์งœ๋Š” ๋ถ€๋ถ„์—์„œ ๋‚˜๋Š” ๋ณต์žกํ•˜๊ฒŒ ์งœ๊ฒŒ ๋˜๋Š” ๊ฑฐ ๊ฐ™๋‹ค..

์–ด์งธ์„œ๐Ÿฅน

 

function solution(a, b, n) {
  let receive = 0;	// ๋ฐ›์€ ๋ณ‘์˜ ์ˆ˜

  while(n >= a){
    receive += Math.floor(n / a) * b;	// ๋นˆ ๋ณ‘์„ ์ฃผ๊ณ  ๋ฐ›์€ ๋ณ‘์˜ ์ˆ˜๋ฅผ ๊ณ„์† ๋”ํ•ด์ค€๋‹ค.
    n = Math.floor(n / a) * b + (n % a);	// n์€ ๋ฐ›์€ ๋ณ‘์˜ ์ˆ˜ + ๋‚จ์€ ๋ณ‘์˜ ์ˆ˜
  }
  return receive;
}

โžฐ ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํžˆ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ๊ฐ™์€ ๊ฒŒ ์žˆ๋‚˜..๋‚˜ ๋นผ๊ณ  ๋‹ค ์ž˜ ํ‘ธ๋Š” ๊ฑฐ ๊ฐ™์• .......