Algorithms

[백준 알고리즘] (I/O) 10818 Java 풀이

SDev 2020. 3. 5. 12:12
728x90

입출력 - 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;
 
import java.util.Scanner;
 
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