IT's Jenna

백준 while문 - 10952, 10951, 1110 (javascript) 본문

백준 문제풀이

백준 while문 - 10952, 10951, 1110 (javascript)

developer Jenna 2021. 12. 2. 10:31

1. 10952

백준 10952

 

const readline = require('readline')
const rl = readline.createInterface({
    input : process.stdin,
    output : process.stdout
})

const solution = (input) => {
    // console.log(input)
    let i = 0;
    while(i<input.length){
        const N = input[i].split(" ").map(e => parseInt(e));
        if( N[0]===0 && N[1]===0){
            break;
        }
        console.log(N[0] + N[1])
        i++;
    }
}

const input = [];
rl.on("line", function(line){
    input.push(line);
}).on("close", function(){
    solution(input);
    process.exit();
})
  • 조건으로 while문 종료할 때 break 사용하기

2. 10951

백준 10951

 

const readline = require('readline')
const rl = readline.createInterface({
    input : process.stdin,
    output : process.stdout
})

const solution = (input) => {
    // console.log(input)
    let i = 0;
    while(i<input.length){
        const N = input[i].split(" ").map(e => parseInt(e));
        console.log(N[0] + N[1])
        i++;
    }
}

const input = [];
rl.on("line", function(line){
    input.push(line);
}).on("close", function(){
    solution(input);
    process.exit();
})

3. 1110

백준 1110

 

const readline = require('readline')
const rl = readline.createInterface({
    input : process.stdin,
    output : process.stdout
})

const solution = (input) => {
    let num = input;
    let sum ;
    let i = 0;

    while (true) {
        i++;
    
        sum = Math.floor(num / 10) + num % 10;
        // console.log("sum",sum)
        num = (num % 10) * 10 + sum % 10; 
        // console.log("num",num)
    
        if (input == num) {
        break;
        } 
    }
    
    console.log(i);
}

const input = [];
rl.on("line", function(line){
    input.push(line);
}).on("close", function(){
    solution(input);
    process.exit();
})

엄청 오래 고민한 데에 비해 생각보다 답은 간단했던 문제였다. 문제에서 주어지는 값은 최대 두 자리 수임에 유의하자.

 

  • 일의 자리 구하는 식 : num%10
  • 십의 자리 구하는 식 : Math.floor(num/10)
  • '주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수를 만든다'라는 말에 현혹되어 어렵게 생각할 필요 없다. 결국 위의 식을 통하면 한 자릿수의 십의 자리는 0이 된다. (나는 이 말에 속아 숫자를 배열로 바꾸고 배열 앞에 unshift로 0을 넣는 뻘짓을 했다ㅎㅎ)
  • 끝나는 조건이 주어진다면 break로 while문을 종료한다.
Comments