[백준 알고리즘] (I/O) 10818 Java 풀이
입출력 - 2557, 1000, 2558, 10950, 10951, 10952, 10953, 11021, 11022, 11718, 11719, 11720, 11721, 2741, 2742, 2739, 1924, 8393, 10818, 2438, 2439, 2440, 2441, 2442, 2445, 2522, 2446, 10991, 10992
출처: https://plzrun.tistory.com/entry/알고리즘-문제풀이PS-시작하기 [plzrun's algorithm]
문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
change Nxxxx -> Main && remove package lines!!!
이클립스에서 작성하면서 문제 이름으로 클래스를 생성하여 풀었기 때문에
클래스 이름을 Main으로 바꾸고, package 부분도 지우고 제출해야 정상적으로 돌아갑니다.
<풀이>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package io;
public class N10818 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
int min = Integer.MAX_VALUE;
int max = Integer.MIN_VALUE;
int temp = 0;
for(int i=0; i<n; i++) {
arr[i] = sc.nextInt();
temp = arr[i];
if(temp < min) {
min = temp;
}
if(temp > max) {
max = temp;
}
}
System.out.println(min + " " + max);
}
}
|
12, 13 Line에서 min에 최댓값, max에 최솟값은 일부러 넣어주었다.
그렇지 않으면 뒤에서 temp와 비교하는 과정에서 값이 temp값으로 대체되지 않는다.
이 코드에서 temp라는 변수를 꼭 선언하지 않아도 되지만, 메모리를 더 쓰더라도 가독성이 좋게 쓰고 싶었다.
* 다른 분들 풀이를 보니 버퍼를 사용해서 String으로 받은 뒤 Int로 형변환하는 과정으로 푸시는 분들이 꽤 많았는데
개인적으로 그런 방식이 아직 익숙하지 않아서 반복문을 통한 비교로 풀었다. 다른분들 풀이 보면서 연습해야지..ㅎㅎ
Github: https://github.com/jaeuk9407/AlgorithmBOJ
jaeuk9407/AlgorithmBOJ
BaekJoon Online Judge Problems. Contribute to jaeuk9407/AlgorithmBOJ development by creating an account on GitHub.
github.com