본문 바로가기
BaekJoon

[백준] 1037번 : 약수(JAVA)

by GrayChoi 2019. 11. 20.
반응형

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

 

1037번: 약수

첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다.

www.acmicpc.net

위의 문제는 BaekJoon Online Judge의 단계별로 풀어보기 중 16단계

 

수학3의 카테고리에 포함되어 있는 문제이다.

 

N이라는 숫자의 약수가 있을 때, 입력으로 첫번 째 줄에 1과 N을 제외한

 

N의 약수의 개수가 주어지고 둘 째 줄에는 그 약수들이 입력으로 들어온다.

 

나는 이 입력으로 들어온 숫자들의 최댓값과 최솟값을 곱하면 N이 나온다는 방법으로

 

문제를 해결하였다.

 

더 좋은 알고리즘이 있을거라 생각되긴하는데 문제를 보자마자 바로 떠오른 것은

 

1과 N을 제외한 다음의 최소, 최대값을 곱하면 N이 나온다는 것이다.  

 

import java.util.Scanner;

public class Question_1037 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        int[] Number = new int[N];
        int Max = 0;
        int Min = 0;


        for(int i = 0; i < N; i++) {
            Number[i] = sc.nextInt();
            if(i == 0) {
                Max = Number[0];
                Min = Number[0];
            }
            if(Max < Number[i])
                Max = Number[i];

            if(Min > Number[i])
                Min = Number[i];
        }
        System.out.println(Max * Min);
    }
}
반응형

댓글