[B0J]덱(10866번)

PearLineZero
|2024. 10. 1. 20:10
티어 : Bronze 3
정답여부 : 정답
알고리즘 유형 :수학, 구현
시간 제한 : 1초

 

💡문제

  • N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.

 

💡입력

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

 

💡출력

첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.

 

💡예제 입력1

5
20 10 35 30 7

 

💡예제 출력1

7 35

 

 

💡문제 분석 

  •  입력된 수의 최소의 수 최대의 수를 출력하면 되는 문제

 

💡알고리즘 설계

  1. 수를 배열에 넣고
  2. min에는 Integer의 max의 값을 max에는 Integer에 min의 값을 넣어주며
  3. 각 수를 비교하는데 만약 수가 작으면 min에 크면 max에 대입

 

💡시간복잡도

  • O(N)

 

💡코드

import java.io.*;
import java.util.*;


public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        int[] numbers = new int[N];

      
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            numbers[i] = Integer.parseInt(st.nextToken());
        }

      
        int min_number = Integer.MAX_VALUE; 
        int max_number = Integer.MIN_VALUE; 

        
        for (int i = 0; i < numbers.length; i++) {
            if (min_number > numbers[i]) {
                min_number = numbers[i];
            }
            if (max_number < numbers[i]) {
                max_number = numbers[i];
            }
        }
        
        
        System.out.println(min_number + " " + max_number);
    }
}

 

💡 틀린 이유

통과

 

💡 느낀점 or 기억할정보

없음.