๋ฐ˜์‘ํ˜•

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ


ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ "๋ถ€์กฑํ•œ ๊ธˆ์•ก ๊ณ„์‚ฐํ•˜๊ธฐ" ๋ฌธ์ œ๋‹ค. ์•„๋ž˜ 3๊ฐœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›๋Š”๋‹ค.

 

  • price : ๋†€์ด๊ธฐ๊ตฌ์˜ ์ด์šฉ๋ฃŒ
  • money : ๊ณ ๊ฐ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ธˆ์•ก
  • count : ๊ณ ๊ฐ์ด ํ•ด๋‹น ๋†€์ด๊ธฐ๊ตฌ๋ฅผ ์ด์šฉํ•œ ํšŸ์ˆ˜

 

๋†€์ด๊ธฐ๊ตฌ๋ฅผ ์ด์šฉํ•œ ํšŸ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚  ๋•Œ๋งˆ๋‹ค ํšŸ์ˆ˜ ๋งŒํผ์˜ ์ด์šฉ๋ฃŒ๋ฅผ ๋” ๋ฐ›๋Š”๋‹ค. ๋†€์ด๊ธฐ๊ตฌ์˜ ์ด์šฉ๋ฃŒ price ๊ฐ€ 100์›์ด๋ผ๋ฉด 1๋ฒˆ ์ด์šฉํ•  ๋• 100์›, 2๋ฒˆ ์ด์šฉํ•  ๋• 200์›, 3๋ฒˆ ์ด์šฉํ•  ๋• 300์›์ด ๋œ๋‹ค. ๋†€์ด๊ธฐ๊ตฌ๋ฅผ count ๋ฒˆ ํƒ”์„ ๋•Œ money ๊ธˆ์•ก์—์„œ ์–ผ๋งˆ๋‚˜ ๋ชจ์ž๋ผ๋Š”์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•ด์•ผ ๋œ๋‹ค. ๊ธˆ์•ก์ด ๋ชจ์ž๋ผ์ง€ ์•Š์œผ๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•˜๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

function solution(price, money, count) {
  let sum = 0;
  for (let i = 1; i <= count; i += 1) {
    sum += price * i; // 3 + 6 + 9 + 12 = 30
  }

  return sum <= money ? 0 : sum - money; // 30 - 20 = 10
}

solution(3, 20, 4); // 10

 

์•„๋ž˜๋Š” ๊ฐ€์šฐ์Šค ๊ณต์‹์„ ์ด์šฉํ•ด์„œ ํ•ด๊ฒฐํ•œ ์ฝ”๋“œ๋กœ ์ข‹์•„์š”๋ฅผ ๊ฐ€์žฅ ๋งŽ์ด ๋ฐ›์•˜๋‹ค. 

function solution(price, money, count) {
  const tmp = (price * count * (count + 1)) / 2 - money;
  return tmp > 0 ? tmp : 0;
}

 

๋“ฑ์ฐจ์ˆ˜์—ด (๊ฐ€์šฐ์Šค ๊ณต์‹)


1๋ถ€ํ„ฐ 100๊นŒ์ง€ ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ํ•  ๋•Œ $1 + 100 = 101$, $2 + 99 = 101$, $3 + 98 = 101$.. ๋ชจ๋‘ 101์ด ๋‚˜์˜จ๋‹ค. $50 + 51 = 101$ ๊นŒ์ง€ ๊ณ„์† ๋ฐ˜๋ณตํ•ด์„œ 101์„ 50๋ฒˆ ๋”ํ•˜๋ฉด 1~100๊นŒ์ง€ ์ˆ˜์˜ ํ•ฉ์ด ๋œ๋‹ค.

 

๋”ฐ๋ผ์„œ 1~100๊นŒ์ง€ ์ˆ˜์˜ ํ•ฉ์€ $101 * 50 = 5050$์ด ๋œ๋‹ค. 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆ˜์—ด์€ ์•„๋ž˜์ฒ˜๋Ÿผ ๊ณต์‹ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

n = ๋งˆ์ง€๋ง‰ ์ˆ˜(1๋ถ€ํ„ฐ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆ˜์—ด์—์„  ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ˆ˜๊ฐ€ ํ•ญ์˜ ๊ฐœ์ˆ˜)
101(n + 1)์„ 50(n / 2)๋กœ ๊ณฑํ•˜๋ฉด 1~100๊นŒ์ง€์˜ ๋ชจ๋“  ํ•ฉ์ด ๋œ๋‹ค. ํ˜น์€...
101(n + 1)์„ 100(n)์œผ๋กœ ๊ณฑํ•œ ๋’ค 2๋กœ ๋‚˜๋ˆ„๋ฉด 1~100๊นŒ์ง€์˜ ๋ชจ๋“  ํ•ฉ์ด ๋œ๋‹ค. 
**(n + 1) * n / 2**

 

๋งˆ์ง€๋ง‰ ์ˆ˜(ํ•ญ์˜ ๊ฐœ์ˆ˜)์—์„œ 2๋ฅผ ๋‚˜๋ˆ„๋Š” ์ด์œ ๋Š”? ํ•ญ ๊ฐœ์ˆ˜ ์ ˆ๋ฐ˜ ์ง€์ ์„ ๋„˜์„๋•Œ๋ถ€ํ„ฐ ์ด๋ฏธ ๋”ํ–ˆ๋˜ ์ˆ˜๋ฅผ ์ค‘๋ณตํ•ด์„œ ๋”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

47 + 54
48 + 53
49 + 52
50 + 51
------- ์ค‘๊ฐ„ ์ง€์ 
51 + 50
52 + 49
53 + 48
54 + 47
...

 

ํ•ญ์˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ

1๋ถ€ํ„ฐ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆ˜์—ด์—์„  ํ•ญ์ƒ ๋งˆ์ง€๋ง‰ ์ˆ˜๊ฐ€ ํ•ญ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋œ๋‹ค.

 

1๋ถ€ํ„ฐ 100๊นŒ์ง€๋Š” ๊ฐ ํ•ญ์ด 1์”ฉ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ ์ด ํ•ญ์˜ ๊ฐœ์ˆ˜๋„ 100์ด๋ผ๋Š”๊ฑธ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ 1, 3, 5, 7, 9 ์ด๋ ‡๊ฒŒ 2์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆ˜์—ด์€ ๋จผ์ € ๋ช‡๊ฐœ์˜ ํ•ญ์ด ์žˆ๋Š”์ง€๋ถ€ํ„ฐ ๊ณ„์‚ฐํ•ด์•ผ ํ•œ๋‹ค. ์•„๋ž˜ ๊ณต์‹์œผ๋กœ ์‰ฝ๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

((๋งˆ์ง€๋ง‰ ์ˆ˜ - ์ฒซ๋ฒˆ์งธ ์ˆ˜) / ์ˆ˜์—ด์˜ ์ฆ๊ฐ€ํญ) + 1

 

3, 5, 7, ...401 ์ˆ˜์—ด์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด...

  • ์ฒซ๋ฒˆ์งธ ํ•ญ(3)๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ํ•ญ(401)๊นŒ์ง€ $401 - 3 = 398$ ๋งŒํผ ์ฆ๊ฐ€ํ•œ๋‹ค.
  • ์ˆ˜์—ด์ด 2์”ฉ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ ์ฒซ๋ฒˆ์งธ ํ•ญ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ํ•ญ์— ๋„๋‹ฌํ•˜๊ธฐ ๊นŒ์ง€ $398 / 2 = 199$ ๊ฐœ์˜ ํ•ญ์ด ์žˆ๋‹ค.
  • ์ฒซ๋ฒˆ์งธ ํ•ญ๋„ ํฌํ•จํ•ด์•ผ ํ•˜๋ฏ€๋กœ $199 + 1 = 200$ ๊ฐœ์˜ ํ•ญ์ด ์žˆ๋‹ค.

 

์œ„ ๊ณต์‹๋Œ€๋กœ ๋‹ค๋ฅธ ์ˆ˜์—ด์˜ ํ•ญ ๊ฐœ์ˆ˜๋„ ๊ตฌํ•ด๋ณด๋ฉด...

  • 1~100๊นŒ์ง€ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆ˜์—ด์€ $((100 - 1) / 1) + 1 = 100$ ๊ฐœ์˜ ํ•ญ์ด ์žˆ๋‹ค
  • 1, 3, 5, 7, 9๊นŒ์ง€ 2์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆ˜์—ด์€ $((9 - 1)/2) + 1 = 5$ ๊ฐœ์˜ ํ•ญ์ด ์žˆ๋‹ค

 

์ˆ˜์—ด์˜ ๋ชจ๋“  ํ•ฉ ๊ตฌํ•˜๊ธฐ

๋ชจ๋“  ํ•ญ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ–ˆ์œผ๋‹ˆ ๊ฐ€์šฐ์Šค๊ฐ€ ์ดˆ๋“ฑํ•™๊ต๋•Œ ํ’€์—ˆ๋˜ ๋ฐฉ์‹์„ ๊ทธ๋Œ€๋กœ ์ ์šฉํ•˜๋ฉด ๋œ๋‹ค.

(์ฒซ๋ฒˆ์งธ ์ˆ˜ + ๋งˆ์ง€๋ง‰ ์ˆ˜) * (ํ•ญ์˜ ๊ฐœ์ˆ˜ / 2)

 

3, 5, 7, ...401 ๊นŒ์ง€์˜ ํ•ฉ์„ ๊ตฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด...

  • ํ•ญ์˜ ๊ฐœ์ˆ˜ : $(401 - 3) / 2 + 1 = 200$
  • ์ˆ˜์—ด์˜ ํ•ฉ : $(3 + 401) * 200 / 2 = 40400$

 

๋ฌธ์ œ์— ๋“ฑ์ฐจ์ˆ˜์—ด ๊ณต์‹ ์ ์šฉํ•˜๊ธฐ


๋‹ค์‹œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฌธ์ œ๋กœ ๋Œ์•„์™€์„œ count๋งŒ ๋”ฐ๋กœ ๋ถ„๋ฆฌํ•ด์„œ ์ƒ๊ฐํ•ด๋ณธ๋‹ค. count ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ 4๋กœ ๋ฐ›์•˜๋‹ค๋ฉด 1, 2, 3, 4 ์ด๋ ‡๊ฒŒ 1์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆ˜์—ด์ด ๋œ๋‹ค. ์œ„์—์„œ ๊ณต๋ถ€ํ–ˆ๋˜ ๋“ฑ์ฐจ์ˆ˜์—ด ๊ณต์‹์„ ์ ์šฉํ•ด์„œ count ์ˆซ์ž๋งŒํผ์˜ ์ด ํ•ฉ์„ ๊ตฌํ•ด๋ณด๋ฉด $(4+1) * (4 / 2) = 10$์ด ๋œ๋‹ค.

 

์ฒซ๋ฒˆ์งธ ์ˆ˜๋Š” ํ•ญ์ƒ 1์ด๊ธฐ ๋•Œ๋ฌธ์— 4(count) + 1์„ ํ–ˆ๋‹ค. count๋Š” 1์”ฉ ์ฆ๊ฐ€ํ•˜๋ฏ€๋กœ ํ•ญ์˜ ๊ฐœ์ˆ˜๋Š” ํ•ญ์ƒ count ์ˆ˜์™€ ๊ฐ™์•„์„œ 4/2๋ฅผ ํ–ˆ๋‹ค. ์ฝ”๋“œ๋กœ ํ’€์–ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

(count + 1) * (count / 2);

 

์—ฌ๊ธฐ์— price ๊ฐ’์„ ๊ณฑํ•ด์ฃผ๋ฉด ์ฆ๊ฐ€ํ•œ count๊นŒ์ง€ count * price ๊ฐ’์„ ๋ชจ๋‘ ๋”ํ•œ ๊ธˆ์•ก์ด ๋œ๋‹ค. 

(count + 1) * (count / 2) * price;

 

๊ณ ๊ฐ์ด ์›๋ž˜ ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๋ˆ money๋ฅผ ๋นผ์ฃผ๋ฉด count๋ฒˆ ๋งŒํผ ๋†€์ด๊ธฐ๊ตฌ๋ฅผ ์ด์šฉํ•  ๋•Œ์˜ ์ดˆ๊ณผ๊ธˆ์•ก์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์›ํ•˜๋Š” ๋‹ต์ด๋‹ค.

(count + 1) * (count / 2) * price - money;

 

๋” ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•ด๋ณด๊ธฐ

์ข€ ๋” ์‰ฝ๊ฒŒ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜๋„ ์žˆ๋‹ค. price๊ฐ€ 3, count๊ฐ€ 4๋ผ๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ, ์•„๋ž˜์ฒ˜๋Ÿผ price ์ˆซ์ž ๋งŒํผ ์ฆ๊ฐ€ํ•˜๋Š” count๊ฐœ์˜ ํ•ญ์„ ๊ฐ–๋Š” ์ˆ˜์—ด์ด ๋œ๋‹ค.

3 + 6 + 9 + 12 = 30
(3 + 12) + (6 + 9) = 30

 

ํ•ญ์˜ ๊ฐœ์ˆ˜๋Š” ํ•ญ์ƒ count ์ˆซ์ž์™€ ๊ฐ™์œผ๋ฏ€๋กœ ๋ฐ”๋กœ ๋ชจ๋“  ์ˆ˜์—ด์˜ ํ•ฉ์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

// (์ฒซ๋ฒˆ์งธ ์ˆ˜ + ๋งˆ์ง€๋ง‰ ์ˆ˜) * (ํ•ญ์˜ ๊ฐœ์ˆ˜ / 2)
(price + price * count) * (count / 2);

 

๋ ˆํผ๋Ÿฐ์Šค


 


๊ธ€ ์ˆ˜์ •์‚ฌํ•ญ์€ ๋…ธ์…˜ ํŽ˜์ด์ง€์— ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”
๋ฐ˜์‘ํ˜•