728x90
반응형
문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
문제 접근 방법
첫 번째 입력되는 숫자를 최댓값 혹은 최솟값이라 가정하고 이후 입력되는 숫자를 비교하여 내가 처음 가정한 숫자보다 더 크면 최댓값을 바꿔주고 더 작으면 최솟값을 바꿔주면서 마지막 숫자까지 비교를 마치면 그때의 최댓값과 최솟값을 출력해주면 되는 문제이다.
1. if문 사용
2. Math클래스 함수 사용(Math.min, Math.max)
JAVA 코드 풀이
1. if문 사용
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
int size = input.nextInt(); //주어질 정수의 개수
int num;
int min = input.nextInt(); //최초 입력 숫자를 최소값이라 가정한다
int max = min; // 최초 입력 숫자를 최대값이라 가정한다
for (int i=1; i<size; i++){
num = input.nextInt(); //두번째 이후 입력 숫자를 저장한다
if(max < num) //두번째 이후 입력 숫자가 내가 처음 가정한 최대값보다 큰지 확인하여 더 크면 최대값을 바꿔준다
max = num;
else if(min > num) //두번째 이후 입력 숫자가 내가 처음 가정한 최소값보다 작은지 확인하여 더 작으면 최소값을 바꿔준다
min = num;
}
System.out.printf("%d %d", min, max);
}
}
2. Math클래스 함수 사용
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner input = new Scanner(System.in);
int size = input.nextInt(); //주어질 정수의 개수
int num;
int min = input.nextInt(); //최초 입력 숫자를 최소값이라 가정한다
int max = min; // 최초 입력 숫자를 최대값이라 가정한다
for (int i=1; i<size; i++){
num = input.nextInt(); //두번째 이후 입력 숫자를 저장한다
min = Math.min(min, num); //두번째 이후 입력 숫자가 내가 처음 가정한 최대값보다 큰지 확인하여 더 크면 최대값을 바꿔준다
max = Math.max(max, num); //두번째 이후 입력 숫자가 내가 처음 가정한 최소값보다 작은지 확인하여 더 작으면 최소값을 바꿔준다
}
System.out.printf("%d %d", min, max);
}
}
후기
if문을 사용하던 Math클래스에 내장된 함수를 사용하던 성능면에서는 큰 차이는 없다. 취향에 따라 본인이 편한 것을 사용하면 좋을 것 같다.
문제 원본
https://www.acmicpc.net/problem/10818
728x90
반응형
'문제 풀이 > [JAVA_자바] 백준' 카테고리의 다른 글
[JAVA / 자바] 백준 1546번 - 평균 (0) | 2021.12.08 |
---|---|
[JAVA / 자바] 백준 2562번 - 최댓값 (0) | 2021.12.07 |
[JAVA / 자바] 백준 1110번 - 더하기 사이클 (0) | 2021.12.04 |
[JAVA / 자바] 백준 10951번 - A+B(4) (0) | 2021.12.03 |
[JAVA / 자바] 백준 15552번 - 빠른A+B (0) | 2021.12.02 |