백준 - 약수[java]

스브코·2021년 11월 13일
0

문제 출처: https://www.acmicpc.net/problem/1037

문제 설명

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

입력

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

6
3 4 2 12 6 8

출력

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

24

문제 풀이

import java.io.*;

public class Main {
    public static void main (String args []) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        br.readLine();
        String [] input = br.readLine().split(" ");
        int max = 0;
        int min = Integer.MAX_VALUE;
        for(int i = 0; i < input.length; i++) {
            int temp = Integer.parseInt(input[i]);
            max = temp > max ? temp : max;
            min = temp < min ? temp : min;
        }
        bw.write(max * min + "");
        bw.flush();
        bw.close();
        br.close();
    }
}

주어진 숫자의 max와 min을 찾아서 곱해버리면 끝이다.

다른 풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		StringTokenizer st = new StringTokenizer(br.readLine());
		int[] soo = new int[N];
		int max = -1;
		int min = 1000001;
		for(int i=0;i<N;i++) {
			soo[i] = Integer.parseInt(st.nextToken());
			max = (max > soo[i]) ? max : soo[i];
			min = (min < soo[i]) ? min : soo[i];
		}
		System.out.println(max*min);
		

	}

}

내 코드보다 빨라서 봤는데 내가 split() 함수를 써서 조금 더 속도가 늦엇던거같다. 안쓰고도 이렇게 가능하다.

profile
익히는 속도가 까먹는 속도를 추월하는 그날까지...

0개의 댓글