https://www.acmicpc.net/problem/5086
두 수를 입력받고, 두 수의 관계가 약수인지, 배수인지, 둘 다 아닌지 판별하는 문제이다.
moduler 연산(%) 을 이용하면 간단하게 풀리는 문제이다.
두 수(num1, num2) 를 받았을 때, % 연산을 한 결과가 0 이라면, 두 수는 약수 혹은 배수의 관계이고, 0이 아니라면 약수와 배수가 모두 아닌 관계이다.
약수와 배수의 차이는 num1 과 num2 의 크기차이로 알 수 있다.
num1 이 num2 보다 작으면, 약수(factor)
num1 이 num2 보다 크면, 배수(multiple) 이다.
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while(true)
{
StringTokenizer st = new StringTokenizer(br.readLine());
int num1 = Integer.parseInt(st.nextToken());
int num2 = Integer.parseInt(st.nextToken());
if(num1 == 0 && num2 == 0)
break;
/*
* num1 이 num2 보다 작을 경우 2가지의 경우의 수가 있을 수 있다.
* 첫 번째, num1 이 num2의 약수이다. 이는 num2 % num1 == 0; 을 통해 알 수 있다.
* 두 번째, 둘 다 아닌 경우이다. num2 % num1 != 0; 을 통해 알 수 있다.
*
* num1 이 num2 보다 클 경우도 마찬가지이다.
* 위에 케이스에서 num1 을 num2, num2 를 num1 으로 생각하면 된다.
*/
if(num1 < num2)
{
if(num2 % num1 == 0)
sb.append("factor").append("\n");
else
sb.append("neither").append("\n");
}
else
{
if(num1 % num2 == 0)
sb.append("multiple").append("\n");
else
sb.append("neither").append("\n");
}
}
System.out.print(sb.toString());
}
}
- 느낀 점
아직까진 간단하다.
'[JAVA] > 자바[JAVA] 백준' 카테고리의 다른 글
BOJ(백준 온라인 저지) 9506번 with 자바[JAVA] (0) | 2024.03.18 |
---|---|
BOJ(백준 온라인 저지) 2501번 with 자바[JAVA] (0) | 2024.03.18 |
BOJ(백준 온라인 저지) 1406번 with 자바[JAVA] (0) | 2022.01.18 |
BOJ(백준 온라인 저지) 1874번 with 자바[JAVA] (0) | 2022.01.18 |
BOJ(백준 온라인 저지) 9012번 with 자바[JAVA] (0) | 2022.01.18 |