반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [백준 알고리즘] 백준 1037번 약수 자바(Java)

1) 문제번호 : 1037번

 

2) 문제 출처

www.acmicpc.net/problem/1037

 

1037번: 약수

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

www.acmicpc.net

 

2. 문제

양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.

 

3. 제약사항

4. 입력

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

 

5. 출력

첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다.

 

6. 풀이

- 입력값에서 1과 자기 자신인 N을 받지 않으므로, 약수에서 최소값과 최대값을 곱해주면 된다.

- 즉, 8의 약수는 1, 2, 4, 8 인데 1과 8은 받지 않으므로 2와 4를 곱하면 된다.

- 20의 약수는 1, 2, 4, 5, 10, 20인데 1과 20은 받지 않으므로 2와 10을 곱하면 된다.

 

7. 소스 코드

import java.util.*;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int count = sc.nextInt(); //약수의 개수
		int[] arr = new int[count];
		
		for(int i=0;i<count;i++) {
			arr[i] = sc.nextInt();
		}
		
		Arrays.sort(arr);
		
		//최대
		int max = arr[count-1];
		
		//최소
		int min = arr[0];
		
		System.out.println(max*min);
	}
}

 


 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기