문제 : https://www.acmicpc.net/problem/1110 (백준 온라인 저지)

성공한 코드

코드 설명하겟습니다.

 

let sum = null;
let cycle = 0;
let sumStr = N.toString();

 

입력받은 수와 비교할 새로운 수인 sum, 사이클 수, 자릿수 연산을 위해 사용할 sum의 문자열 변수를 선언합니다. 이 때 sum은 null로 초기화하였는데 이는 초기값과 입력값이 겹쳐 for문이 실행되지 않는 것을 방지하기 위해 null로 선언하였습니다. 만약 0으로 초기화한다면 입력값이 0일 때 for문이 수행되지 않습니다. 첫 for문에서 검사할 N의 자릿수를 계산하기 위해 sum 문자열 변수의 초기값은 N의 문자열 형태입니다.


for(;sum!=N;cycle++)

 

사이클로 만들어진 새로운 수가 입력받은 수와 같아질 때까지 반복합니다. 한 사이클이 끝날 때마다 사이클 값은 증가됩니다.

 

if(sumStr.length < 2){
    sumStr = "0".concat(sumStr);
}
        

sumStr 변수의 자릿수가 1이라면 앞에 0을 붙여 2자릿수로 만듭니다. 첫 사이클에는 N의 자릿수를 검사하며 그다음 사이클에는 새로 만들어진 숫자의 자릿수를 검사합니다.

 

let newSum = parseInt(sumStr[0])+parseInt(sumStr[1]);

 

sumStr 변수의 자릿수가 2라면 십의자리와 1의자리 숫자를 더해 정수 형태로 저장합니다.


if(newSum < 10){
    sumStr = sumStr[1].concat(newSum.toString());

 

만들어진 정수값의 자릿수가 1개라면 sumStr의 일의자리수와 만들어진 값을 연결하여 새로운 숫자 문자열을 만들어 sumStr 에 저장합니다.

 

}else{
sumStr = sumStr[1].concat(newSum.toString()[1]);
}

 

만들어진 정수값의 자릿수가 2개라면 sumStr의 일의자리수와 만들어진 값의 일의 자리수를 연결하여 새로운 숫자 문자열을 만들어 sumStr 에 저장합니다.


sum = parseInt(sumStr);

 

새로운 숫자를 만들었으면 입력받은 N값과 비교하기 위해 정수형태로 sum에 저장합니다.

console.log(cycle);

사이클로 만들어진 새로운 수가 입력받은 수와 동일해져서 for문을 탈출하면 cycle 횟수를 출력합니다.

 

이상으로 1110 문제 풀이를 마치겠습니다.

'Programing > Baekjoon 문제 알고리즘(node.js)' 카테고리의 다른 글

2577번 숫자의 개수  (0) 2022.02.25
11021번 A+B - 7  (0) 2022.02.25
10952번 A+B - 5  (0) 2022.02.25
2884번 알람 시계  (0) 2022.02.25
2588번 곱셈  (0) 2022.02.25
Posted by englishmath
,