(Java) 백준 10818번 - 최소, 최대

코딩너구리·2026년 1월 13일

코딩 문제 풀이

목록 보기
156/266

https://www.acmicpc.net/problem/10818

문제

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

접근

N을 입력받고 입력받은 N번만큼 반복문을 돌며 수를 입력받는다. 입력받음과 동시에 미리 정한 최대, 최소값과 이 수를 비교해 최대,최소값을 갱신해준다. 반복이 끝나면 저장된 최소, 최대값을 순서대로 출력한다.

문제해결

> 먼저 입력을 한줄 받아 N에 저장한다. 이 수가 N개의 정수를 나타낸다.
> StringTokenizer로 다음 입력을 받고 이를 N번 반복을 통해 처리한다.
> 문제에서 최대가 1,000,000이고 최소 -1,000,000이므로 이를 최대, 최소값을 미리 준다.
> st로 읽어온 정수를 이 Max와 Min과 비교하며 더 최대값과 최소값을 갱신한다.
> 최종 갱신되어 저장된 값을 출력한다.

코드

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

public class Main
{
    //10818번 최소, 최대
    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int N = Integer.parseInt(br.readLine());

        StringTokenizer st = new StringTokenizer(br.readLine());
        int Max = -1_000_000;
        int Min = 1_000_000;

        for(int i = 0; i < N; i++)
        {
            int tmp = Integer.parseInt(st.nextToken());
            Max = Math.max(Max, tmp);
            Min = Math.min(Min, tmp);
        }
        bw.write(Min + " ");
        bw.write(Max + "\n");
        bw.flush();
        bw.close();
    }
}

후기

int N과 StringTokenizer의 순서를 생각안하고 StringTokenizer를 먼저 선언했더니 오류가 났다. 기능을 다시 뜯어보니 br에 입력이 들어오면 이를 한줄로 보고 처리하는건데 StringTokenizer를 먼저 쓰면 5가 st로 들어가서 순서가 꼬인다고 한다. 그래서 순서를 바꾸고 처리했다.

0개의 댓글