10952번
간단해 보이는데 생각보다 오래 걸렸다.
계속 시간초과 출력초과가 떠서 뭐가 문제인지 찾는게 오래 걸렸다.
풀어도 개운하지 않다.
const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let i=0;
while(true){
let nums = input[i].split(' ');
a = Number(nums[0]);
b = Number(nums[1]);
if(a==0 && b==0){
break;
}
console.log(a+b);
i++;
}
10952번
const input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let i=0;
while(true){
let nums = input[i].split(' ');
a = Number(nums[0]);
b = Number(nums[1]);
let answer = a+b
if(!answer){
break;
}
console.log(answer);
i++;
}
위와 같은 문제
1110번
let input = require('fs').readFileSync('/dev/stdin').toString();
let origin = Number(input)
let count = 0
while (true) {
let sum = Math.floor(input/10) +input%10
input = (input%10)*10 + sum%10
count++
if(input === origin)
break
}
console.log(count)
이 문제는 1의 자리는 input%10, 10의 자리는 Math.floor(input/10)
그리고 1의 자리에 있는 수를 10의 자리로 만들기는 (input%10)*10
을 알면 쉽게 해결할 수 있는 문제다.
근데 여기서 Math.floor와 parseInt의 차이점이 궁금했다.
검색하던 중 잘 알려주는 블로그가 있어서 알 수 있었다!
두 메서드는 양수일 경우 내림한 결과가 나온다.
a = Math.floor( "12.34" ); // 12
b = Math.floor( "56.78" ); // 56
a2 = parseInt( "12.34" ); // 12
b2 = parseInt( "56.78" ); // 56
하지만 음수일 경우 차이가 있다.
c = Math.floor( "-12.34" ); // -13
d = Math.floor( "-56.78" ); // -57
c2 = parseInt( "-12.34" ); // -12
d2 = parseInt( "-56.78" ); // -56
콘솔창에 보여지는 것과 같이 Math.floor 메서드는 소수 첫째 자리에서 양수일 때처럼 내림하는 반면, parseInt 메서드는 올림한다.
parseInt 메서드는 소수점을 버리기 때문!
그 밖의 차이
e = Math.floor( "12 34 56" ); // NaN
e2 = parseInt( "12 34 56" ); // 12
그리고 오늘 푼 문제들은 while문으로 해결하는 문제라서 while문을 사용했는데 for문과 차이점은 뭔지 궁금해졌당..
보통 for문은 반복횟수가 정해진 경우에 사용한다고 한다.
while문은 ( ) 조건식 평가 후에 실행하고 다시 돌아와서 평가하는 방식이라고..
예를들면 for문은 5번 반복이라면 while문은 성고할 때까지 반복!