https://www.acmicpc.net/problem/1037
<문제 요약>
첫 줄에 N의 약수 개수
다음줄에 N의 약수 A들이 입력(1과 N은 안됨)
N을 구하라
<문제 풀이>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class P1037 {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(br.readLine());
ArrayList<Integer> arrayList=new ArrayList<>();
StringTokenizer st=new StringTokenizer(br.readLine());
while (st.hasMoreTokens()){
arrayList.add(Integer.parseInt(st.nextToken()));
}
int max= Collections.max(arrayList);
int min=Collections.min(arrayList);
System.out.println(max*min);
}
}
입력된 A들에서 최대랑 최소값을 구해서 곱하면 N이 나올거라고 생각했다
(검색해보니 이걸 최소 공배수라고 ,,)
Collections로 max, min 찾아도 되고 아님 정렬되는 친구를 사용해서 풀어도 될 것 같다 .
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class P1037 {
public static void main(String[] args) throws IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int n=Integer.parseInt(br.readLine());
int max=Integer.MIN_VALUE;
int min=Integer.MAX_VALUE;
StringTokenizer st=new StringTokenizer(br.readLine());
while (st.hasMoreTokens()){
int num=Integer.parseInt(st.nextToken());
max=(max>num)? max:num;
min=(min>num)? num:min;
}
System.out.println(max*min);
}
}
이렇게도 풀어봤는데!
결과는 이렇다
첫 코드보다 채점 시간이 훨씬 빨라서 기대했는데! 메모리 차이는 별로 없는 것 같다