본문 바로가기

백준/JavaScript

[JS] 백준 약수, 배수와 소수 - 5086번

728x90

 

 

이제는 빠르게 넘어갈 건 넘어가면서 풀려고 한다.

다음 단계인 약수, 배수와 소수부터 시작하겠다.

 

 

문제 5086번

https://www.acmicpc.net/problem/5086

 

5086번: 배수와 약수

각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다.

www.acmicpc.net

 

음... 일단 0이 2개 주어질 때까지 반복문을 돌려주고 약수인지, 배수인지 아니면 둘 다 아닌지 조건문을 이용하여 확인하면 될 것 같다.

 

const readFileSyncAdress = process.platform === 'linux' ? '/dev/stdin':'./input.txt'
const input = require("fs").readFileSync(readFileSyncAdress).toString().trim().split('\n');
let n,m
for(let i=0;;i++){
    [n,m] = input[i].split(' ');
    if(n%m===0){//배수
        console.log('multiple');
    } else if(m%n===0){//약수
        console.log('factor');
    } else if(n==0&&m==0){
        break;
    }else{
        console.log('neither');
    }
    
}

 

 

for문에 조건은 비워두고 반복을 하여 n과 m이 둘 다 0이되면 break를 하게 만들었다.

 

 

 

 

 

while 문도 사용할 수 있는데, 다음과 같이 작성하면 된다.

const readFileSyncAdress = process.platform === 'linux' ? '/dev/stdin':'./input.txt'
const input = require("fs").readFileSync(readFileSyncAdress).toString().trim().split('\n');
let n,m
let i=0;
while(1){
    [n,m] = input[i].split(' ');
    if(n%m===0){//배수
        console.log('multiple');
    } else if(m%n===0){//약수
        console.log('factor');
    } else if(n==0&&m==0){
        break;
    }else{
        console.log('neither');
    }
    i++;
}

 

 

여기서는 i를 따로 증가시켜줘야한다.

728x90