whatisthis?

โŒโŒ ๋ฐฑ์ค€ 1110 javascript (node.js) ํ’€์ด ๋ณธ๋ฌธ

ALGORITHM/BOJ (Node.js)

โŒโŒ ๋ฐฑ์ค€ 1110 javascript (node.js) ํ’€์ด

thisisyjin 2021. 12. 20. 15:00

while๋ฌธ - (3)

 

 


 

๐Ÿ’ก๋ฌธ์ œ

0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 99๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋จผ์ € ์ฃผ์–ด์ง„ ์ˆ˜๊ฐ€ 10๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์•ž์— 0์„ ๋ถ™์—ฌ ๋‘ ์ž๋ฆฌ ์ˆ˜๋กœ ๋งŒ๋“ค๊ณ , ๊ฐ ์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ ๋”ํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ, ์ฃผ์–ด์ง„ ์ˆ˜์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ž๋ฆฌ ์ˆ˜์™€ ์•ž์—์„œ ๊ตฌํ•œ ํ•ฉ์˜ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์ž๋ฆฌ ์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์ด๋ฉด ์ƒˆ๋กœ์šด ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ ์˜ˆ๋ฅผ ๋ณด์ž.

26๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค. 2+6 = 8์ด๋‹ค. ์ƒˆ๋กœ์šด ์ˆ˜๋Š” 68์ด๋‹ค. 6+8 = 14์ด๋‹ค. ์ƒˆ๋กœ์šด ์ˆ˜๋Š” 84์ด๋‹ค. 8+4 = 12์ด๋‹ค. ์ƒˆ๋กœ์šด ์ˆ˜๋Š” 42์ด๋‹ค. 4+2 = 6์ด๋‹ค. ์ƒˆ๋กœ์šด ์ˆ˜๋Š” 26์ด๋‹ค.

์œ„์˜ ์˜ˆ๋Š” 4๋ฒˆ๋งŒ์— ์›๋ž˜ ์ˆ˜๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ 26์˜ ์‚ฌ์ดํด์˜ ๊ธธ์ด๋Š” 4์ด๋‹ค.

N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, N์˜ ์‚ฌ์ดํด์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๐Ÿ“์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 99๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋‹ค.

๐Ÿ“ˆ์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— N์˜ ์‚ฌ์ดํด ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์˜ˆ์ œ ์ž…๋ ฅ

26

์˜ˆ์ œ ์ถœ๋ ฅ

4

 

2+6 = 8  ---> 68

6+8 = 14 ---> 84

8+4 = 12 ---> 42

4+2 = 6 ---> 26

 

 


< ์ฝ”๋“œ >

let input = Number(require('fs').readFileSync('/dev/stdin').toString());

let num = input;
let sum;
let i = 0;

while (true) {
    i++;

    sum = Math.floor(num / 10) + num % 10;
    num = (num % 10) * 10 + sum % 10; 

    if (input === num) {
	break;
    } 
}
console.log(i);

input์„ Number()์•ˆ์— ๋„ฃ๊ณ , ๊ทธ๊ฒƒ์„ input์ด๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ์ €์žฅํ•˜๊ณ , num = input ์œผ๋กœ ์ง€์ •ํ•ด์ค€๋‹ค.

 

while(true) - if - break ๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ 

์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด while๋ฌธ์„ ๋ฒ—์–ด๋‚˜๋„๋ก ํ•œ๋‹ค.

 

i=0์—์„œ i++๋ฅผ ๋จผ์ € ํ•ด์ฃผ๊ณ (์นด์šดํŠธ)

sum = ์‹ญ์˜์ž๋ฆฌ + ์ผ์˜์ž๋ฆฌ ์ด๋ฏ€๋กœ

 

์‹ญ์˜์ž๋ฆฌ = floor(num/10)

์ผ์˜์ž๋ฆฌ = num % 10

 

num์€ (์ฆ‰, ์ƒˆ๋กœ ๊ฐฑ์‹ ๋œ num๊ฐ’) ์ผ์˜์ž๋ฆฌ * 10 + sum์˜ ์ผ์˜์ž๋ฆฌ ์ด๊ณ ,

 

input === num์ด ๋˜๋ฉด break๋กœ while์„ ๋น ์ ธ๋‚˜์˜จ๋‹ค.

 

 

 

โŒ ํ‹€๋ ธ๋˜ ์ฝ”๋“œ๋“ค

 

#1. Reference Error

let input = require('fs').readFileSync('/dev/stdin').toString();
let num = Number(input);
let sum;
let cnt = 0;

while(True){
   cnt++;

   sum = Math.floor(num/10) + num%10; // ์‹ญ์˜์ž๋ฆฌ + ์ผ์˜์ž๋ฆฌ 
   num = (num%10)*10 + sum%10;

   if(num === input) break;
}
console.log(cnt);

 

#2. Syntax Error

let input = Number(require('fs').readFileSync('/dev/stdin').toString());
let num = input;
let sum;
let cnt = 0;

while(True){
   cnt++;

   sum = Math.floor(num / 10) + num % 10;
   num = (num % 10) * 10 + sum % 10;

   if(input === num) {
      break;
}
console.log(cnt);