본문 바로가기

백준

[백준] 10989 수 정렬하기 3_ JAVA

● 문제 


● 풀이 : 간단한 N개의 수를 입력받고 오름차순으로 정렬하는 것이다.

 

 

시간, 메모리 제한이 있어 안될걸 예상하고 한 항상 풀던 코드 (역시나 안됨)

import java.util.Arrays;
import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int[] arr = new int[in.nextInt()];
        for (int i = 0; i <arr.length; i++) {
            arr[i] = in.nextInt();
        }

        Arrays.sort(arr);

        for (int i = 0; i <arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

혹시나 해서 챗 지피티에게 위 코드를 scanner 대신 bufferReader를 사용한 코드로 바꿔달라 하였다.

 

그런데 웬일 코드 통과 ! 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;

class Main {
    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());

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

        Arrays.sort(arr);

        for (int i = 0; i < N; i++) {
            bw.write(Integer.toString(arr[i]));
            bw.newLine();
        }
        bw.flush();

        br.close();
        bw.close();
    }
}

계속 간단한 scanner 방식만 사용하였는데, 이렇게 메모리 제한 문제가 계속 나오는것으로 보아

하루빨리 bufferReader 방식을 손에 익혀야겠다 ..

 

한 줄씩 뜯어보며 주석달아둔 코드

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

class Main {
    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()));

        int[] arr = new int[N];

        for(int i = 0; i< N; i++){
            //문자열로 입력받고 정수로 변환 후 배열에 저장
            arr[i] = Integer.parseInt(br.readLine());
        }
        Arrays.sort(arr);

        for(int i = 0; i< N; i++){
            //정수를 문자열로 변환 (BufferWriter 는 문자열을 처리하므로 출력할 값을 문자열로 변환)
            bw.write(Integer.toString(arr[i]));
            //줄바꿈
            bw.newLine();
        }
        //출력 버퍼 지우기
        bw.flush();

        //br, bw 리소스 해제
        br.close();
        bw.close();

    }
}

'백준' 카테고리의 다른 글

[백준] 1436 영화감독 숌_ JAVA  (2) 2023.06.09
[백준] 1181 단어 정렬_ JAVA  (0) 2023.06.09
[백준] 2775 부녀회장이 될테야_ JAVA  (0) 2023.06.06
[백준] 1259 펠린드롬수_ JAVA  (0) 2023.06.05
[백준] 2798 블랙잭_ JAVA  (0) 2023.06.03