Algorithm/Problem_백준
수학3 (5086, 1037)
uyoo
2019. 10. 31. 15:37
[배수와 약수 _ 5086]
* 조건
- 두개의 수가 주어진다
- 첫 번째 숫자가
- 두 번째 숫자의 약수이면 factor
- 두 번째 숫자의 배수라면 multiple
- 둘다 아니라면 neither
* 알고리즘
- 단순한 if 조건문만 적용해줘도 된다고 본다
* 로직(Logic)
- 첫 번째 숫자 < 두 번째 숫자 -> (조건 2-1) 판별 가능
- 첫 번째 숫자 > 두 번째 숫자 -> (조건 2-2) 판별 가능
- 위 2 조건을 진행하고 아무런 판별이 안됐다면 neither 출력
import java.util.Scanner;
public class Problem_5086 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true){
boolean check_factor = false;
boolean check_multiple = false;
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
if(num1 == 0 && num2 == 0) return;
if(num1 < num2){
//약수 조건
if(num2 % num1 == 0) check_factor = true;
}
else {
//배수 조건
if(num1 % num2 == 0) check_multiple = true;
}
if(check_factor) System.out.println("factor");
else if(check_multiple) System.out.println("multiple");
else System.out.println("neither");
}
}
}
[약수 _ 1037]
* 조건
- N에 대한 약수 A가 주어진다 (단, 1과 자기자신 N의 값은 제외)
- 해당 약수를 보고 N의 값을 출력한다
* 알고리즘
- 규칙을 알아내는게 중요하다
* 로직(Logic)
- 주어진 약수들을 정렬한다
- 만약 약수들의 개수가 1개라면 해당 수를 곱해준다 (ex. 5 -> 5 * 5 = 25)
- 개수가 2개 이상이라면 맨처음과 맨 끝을 곱해주면 N의 값을 구할 수 있다 (ex. 2 4 -> 2 * 4 = 8)
import java.util.Arrays;
import java.util.Scanner;
public class Problem_1037 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] nums = new int[n];
for(int i=0; i<n; ++i){
nums[i] = scanner.nextInt();
}
Arrays.sort(nums);
if(nums.length == 1){
System.out.println(nums[0] * nums[0]);
}
else if(nums.length >= 2){
System.out.println(nums[0] * nums[nums.length-1]);
}
}
}