Algorithm/SW Expert Academy

[SWEA] 7829 보물왕 태혁

SSONGMI 2021. 3. 1. 19:16
반응형

문제 출처: SW Expert Academy

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

: 주어진 약수들로 구성된 원래의 수를 찾아내야 한다.

: 이 때 원래의 수는 주어진 약수들 중에서 가장 작은 수와 가장 큰 수의 곱으로 나타내질 수 있다.

: 따라서 주어진 약수들을 정렬시켜 가장 작은 수와 가장 큰 수를 찾아 곱해주면 된다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
 
public class Solution {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StringBuilder sb = new StringBuilder();
    static StringTokenizer st;
 
    public static void main(String[] args) throws NumberFormatException, IOException {
        // 테스트 케이스 수를 입력받고
        int T = Integer.parseInt(br.readLine());
        for (int tc = 1; tc <= T; tc++) {
            // 각 테스트 케이스마다 약수의 개수를 입력받고
            int N = Integer.parseInt(br.readLine());
            // 약수들을 담을 배열을 만들고
            int[] numbers = new int[N];
 
            // 약수들을 입력받고
            st = new StringTokenizer(br.readLine());
            for (int i = 0; i < N; i++)
                numbers[i] = Integer.parseInt(st.nextToken());
 
            // 정렬시켜서
            Arrays.sort(numbers);
 
            // 첫번째 수와 마지막 수의 곱을 구한다.
            int ans = numbers[0] * numbers[N - 1];
            sb.append(String.format("#%d %d\n", tc, ans));
        }
        System.out.println(sb);
    }
}
반응형