문제 : 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 |