[백준] 5086번 배수와 약수 Java 문제 풀이

2023. 3. 20. 18:03알고리즘/백준

728x90
반응형

문제풀이

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;

interface Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;

       int[] input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();

       while(input[0] != 0 && input[1] != 1) {
           if (input[0] / input[1] > 0 && input[0] % input[1] == 0) {
               System.out.println("multiple");
           } else if (input[1] / input[0] > 0 && input[1] % input[0] == 0) {
               System.out.println("factor");
           } else {
               System.out.println("neither");
           }
           input = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
       }
    }
}

첫 번째 수를 A, 두 번째 수를 B라고 하겠습니다.

 

A를 B로 나눴을 때 몫이 0보다 크고 나머지가 0일 때 A는 B의 배수이고 B는 A의 약수입니다.

그러므로 multiple을 출력해 주면 됩니다.

 

B를 A로 나눴을 때 몫이 0보다 크고 나머지가 0일 때 B는 A의 배수이고 A는 B의 약수입니다.

factor를 출력해 주면 됩니다.

 

둘 다 해당되지 않을 경우 neither을 출력합니다.

 

문제 조건 상 0은 맨 마지막에 나오고 동시에 나옵니다.

그래서 코드상으로 연산할 때 0으로 나누는 일은 발생하지 않습니다.

 

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

 

5086번: 배수와 약수

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

www.acmicpc.net

 

728x90
반응형