[D+70]20220218

ga_ding·2022년 2월 18일
0

TIL

목록 보기
20/55

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문은 성고할 때까지 반복!

profile
大器晩成

0개의 댓글