본문 바로가기
Algorithm/Problem_백준

수학3 (5086, 1037)

by uyoo 2019. 10. 31.

[배수와 약수 _ 5086]

 

 

* 조건

  1. 두개의 수가 주어진다
  2. 첫 번째 숫자가
    1. 두 번째 숫자의 약수이면 factor
    2. 두 번째 숫자의 배수라면 multiple
    3. 둘다 아니라면 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]

 

 

* 조건

  1. N에 대한 약수 A가 주어진다 (단, 1과 자기자신 N의 값은 제외)
  2. 해당 약수를 보고 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