https://www.acmicpc.net/problem/10818
10818번: 최소, 최대
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
www.acmicpc.net
🗒 풀이
java
1) 배열 이용
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] arr = new int[N];
for (int i = 0; i < N; i++) {
arr[i] = sc.nextInt();
}
Arrays.sort(arr);
System.out.println(arr[0] + " " + arr[N-1]);
}
}
Scanner로 입력 크기(N)을 받은 다음, 크기가 N인 배열을 생성한다.
순차적으로 배열의 원소들을 입력받은 후, Arrays.sort()를 통해 오름차순 정렬을 해준다.
정렬이 되어있기 때문에, 인덱스가 0 인 것이 최소, N-1인 것이 최대임을 알 수 있다.
2) 단순 비교
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));
Integer.parseInt(br.readLine()); // N 값인데 쓰이지 않으므로 받기만 하기
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int min = 1000000;
int max = -1000000;
while (st.hasMoreTokens()) {
int value = Integer.parseInt(st.nextToken());
if (value < min) {
min = value;
}
if (value > max) {
max = value;
}
}
System.out.println(min + " " + max);
}
}
최대, 최소의 값만 필요하기 때문에 굳이 배열에 저장하지 않아도 된다고 생각했다.
이 경우에선 N의 값이 굳이 필요하지 않으므로 Integer.parseInt()로 N값만 받아오고 굳이 변수에 저장하진 않는다.
문제에서 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수라는 조건을 이용하여, 최소는 1000000, 최대는 -1000000으로 지정한다.
후, 받아오는 값들을 min, max 값과 비교하여 저장하고, 마지막에 출력해주면 된다.
python
N = int(input())
arr = list(map(int, input().split()))
print(min(arr), max(arr))
입력 받은 값들을 바로 정수형 배열로 변환한다.
파이썬의 min(), max() 함수를 사용하여 배열의 최소, 최대값을 가져온다.
'알고리즘' 카테고리의 다른 글
[백준] 10871번: X보다 작은 수 (java, python) (0) | 2022.07.14 |
---|---|
[백준] 10869번: 사칙연산(java, python) (0) | 2022.07.14 |
[백준] 10809번: 알파벳 찾기 (java, python) (0) | 2022.07.14 |
[백준] 10171번: 고양이 (java, python) (0) | 2022.07.12 |
[백준] 8958번: OX퀴즈 (java, python) (0) | 2022.07.11 |