[배수와 약수 _ 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]);
}
}
}
'Algorithm > Problem_백준' 카테고리의 다른 글
분할 정복(2630, 1992) (0) | 2019.11.21 |
---|---|
큐, 덱(10845, 2164) (0) | 2019.11.19 |
스택(10773, 4949) (0) | 2019.11.05 |
그리디 알고리즘(11047, 1931) (0) | 2019.10.29 |
동적계획법1(2748, 1003, 1904, 9461) (0) | 2019.10.24 |