코딩테스트

백준 1037 자바

whyHbr 2024. 2. 12. 22:14
728x90
반응형

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

 

1037번: 약수

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

www.acmicpc.net

 

주어진 진짜 약수를 이용해 원래 수를 찾는 것 

 - 진짜 약수란: 1과 자기 자신을 제외한 약수 ex) 6의 진짜 약수 = 2,3

주어진 진짜 약수 중 최소값과 최대값을 곱하면 원래 수를 얻을 수 있다.

 

입력받은 n에 대해 약수를 모두 입력받았을 때 n값을 구하는 문제

n에 대한 약수가 모두 주어졌을 때 n의 값을 구하는 것은 약수 중 가장 작은 수와 가장 큰 수를 곱하면 n을 구할 수 있다

 

 

package fc.java.bytest;

import java.util.Scanner;

public class ct1037_2 {
    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); //원래수 구하기
    }
}



 

변수N에 진짜 약수 개수를 입력 받음

Number : 진짜 약수들을 저장

for반복문 사용해 진쩌 약수 입력 받음. 배열 Number에 저장

최대값과 최소값 찾음. 이 둘을 곱하여 원래 수 찾음

728x90