백준 1110 번 JavaScript 문제풀이
JavaScript 백준 온라인 알고리즘 공부
백준 1110 번 JavaScript 문제
본인이 제출한 답
const fs = require("fs");
const input = (process.platform === "linux"
? fs.readFileSync("/dev/stdin").toString()
: `1`
).trim();
let turnNumber;
let N = input;
let answerNumber = 0;
while (true) {
N < 10 ? (N = "0" + N) : (N = String(N));
let numberAB = Number(N[0]) + Number(N[1]);
numberAB = String(numberAB);
numberAB > 9
? ((turnNumber = N[1] + numberAB[1]), (turnNumber = Number(turnNumber)))
: ((turnNumber = N[1] + numberAB), (turnNumber = Number(turnNumber)));
answerNumber++;
if (turnNumber === Number(input)) break;
N = turnNumber;
}
console.log(answerNumber);
풀이과정 소감
-
while문에서 쓰일 입력값변수와 계산을 끝낸 변수만 철저히 돌려 써야하는것에 집중하지 않으면 최초 입력값과 결과값의 비교가 불가능해지며 무한루프에 빠지는 오류를 범할 수 있다.
-
10의 자리와 1의 자리를 골라 대입을 하는 작업을 할려면 if문과 문자열과 숫자형의 변환을 반복하게 된다. 본인의 경우 10의 자리를 더해 문자열과 숫자형를 반복 변환하며 계산하는 제법 긴 코드에다가 if문을 세번이나 쓰게 됬는데 여기 블로그의 풀이를 참고해보면....
1의 자리에 있는 수 구하기: num % 10
10의 자리에 있는 수 구하기: Math.floor(num / 10)
1의 자리에 있는 수 10의 자리 수로 만들기 : (num % 10) * 10 -
...라는 공식을 이용해 너무나 간단한 절차로 푸는 방법을 볼 수 있다;;;
이 공식 덕분에 입력값과 결과값의 변수만으로 while문의 루프가 성립되며 심지어 if문조차 break용으로 한 번만 쓰는게 가능하다.본인도 이렇게 바로 좋은 계산절차를 생각해내는 능력이 생겨야 하는데 과연 내가 그렇게 성장할 수 있을지는 여전히 모를일이다.
Author And Source
이 문제에 관하여(백준 1110 번 JavaScript 문제풀이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dragoocho/백준-1110-번-JavaScript-문제풀이저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)