본문 바로가기

알고리즘/약수, 배수와 소수 단계

[백준][5086] 배수와 약수

728x90

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

 

5086번: 배수와 약수

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

www.acmicpc.net

문제

 

4 × 3 = 12이다.

이 식을 통해 다음과 같은 사실을 알 수 있다.

3은 12의 약수이고, 12는 3의 배수이다.

4도 12의 약수이고, 12는 4의 배수이다.

두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.

  1. 첫 번째 숫자가 두 번째 숫자의 약수이다.
  2. 첫 번째 숫자가 두 번째 숫자의 배수이다.
  3. 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다.

입력

입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지않는 두 자연수로 이루어져 있다. 마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다.

출력

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

예제 입력 1

8 16
32 4
17 5
0 0

예제 출력 1

factor
multiple
neither

 

 

문제 풀이

1. 주어진 두 수 a, b 를 입력으로 받는다.

2. 서로 다른 수이기 때문에 a < b 일 경우이면서 약수의 조건에 해당되는 지 확인다. b 를 a 로 나눠서 0으로 되면 약수 조건에 해당 된다.

3. a > b 일 경우이면서 배수의 조건에 해당되는 지 확인다. a 를 b 로 나눠서 0으로 되면 배수 조건에 해당 된다.

4. 2, 3 에 해당되지 않으면 neither 로 출력한다.

 

코드

import java.io.BufferedReader
import java.io.InputStreamReader

fun main(args: Array<String>) {
    val br = BufferedReader(InputStreamReader(System.`in`))

    while (true) {
        val (a, b) = br.readLine().split(" ").map { it.toInt() }

        if (a == 0 && b == 0) break

        var result = "neither"

        if (a < b && b % a == 0) {
            result = "factor"
        } else if (a > b && a % b == 0) {
            result = "multiple"
        } else {
            result = "neither"
        }

        println(result)
    }
}
728x90

'알고리즘 > 약수, 배수와 소수 단계' 카테고리의 다른 글

[백준][2501] 약수 구하기  (0) 2024.04.26