본문 바로가기
기타/알고리즘(백준)

[JS] 백준 1110번 더하기 사이클

by ㅇㅇ우너자나나 2022. 9. 25.

 

https://www.acmicpc.net/problem/1110

 

1110번: 더하기 사이클

0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음,

www.acmicpc.net

 

 

- 첫번째

let input = firstInputNum.toString();
let inputNum = +input;
let cnt = 0;
let finish = false;

while (!finish) {
  if (inputNum < 10) {
    input = "0" + input;
    inputNum = +input;
  }
  let inputArr = input.split("");
  let inputNumArr = inputArr.map((i) => +i);
  //////////////////////////////////////

  //////////////////////////////////////
  let result = (inputNumArr[0] + inputNumArr[1]).toString();
  let resultNum = +result;
  if (resultNum < 10) {
    result = "0" + result;
    resultNum = +result;
  }
  let resultArr = result.split("");
  let resultNumArr = resultArr.map((i) => +i);
  //////////////////////////////////////

  //////////////////////////////////////
  input = inputArr[1] + resultArr[1];
  inputNum = +input;
  cnt++;
  if (inputNum === firstInputNum) {
    console.log(cnt);
    finish = true;
  }
}

 

시간초과....

 

 


- 두번째

const firstInputNum = require('fs').readFileSync('dev/stdin').toString().trim();
let inputNum = firstInputNum;
let result = 0;
let cnt = 0;
let finish = false;
while (!finish) {
  result = Math.floor(inputNum / 10) + (inputNum % 10);
  inputNum = inputNum%10*10 + result%10;
  cnt++;
  if(firstInputNum==inputNum){
    finish = true;
  }
}
console.log(cnt);​

 

 

- 메모

당연히 문자열 배열로 만들어 문자열끼리 더해줘야 할 것으로 생각했는데, 굳이 그럴 필요가 없었다.