백준 브론즈I - 10989 수 정렬하기 3 문제 풀이
문제 설명
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
문제의 자세한 내용은 해당 링크를 통해 확인 : 문제 링크
풀이 코드
import java.io.*;
import java.util.Arrays;
public 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 size = Integer.parseInt(br.readLine());
int[] arr = new int[size];
for(int i = 0; i < size; i++)
arr[i] = Integer.parseInt(br.readLine());
Arrays.sort(arr);
for(int i : arr)
bw.write(i + "\n");
bw.flush();
bw.close();
}
}
문제 해결 전략
이라 쓰고 문제를 보고서 어떻게 풀면 될까?에 대한 생각을 정리한 항목
이전에 풀었던 "백준 실버V 수 정렬하기 2" 코드와 완전히 동일한 풀이
사실 처음에는 Collections의 sort를 사용해 보기 위해서 ArrayList<Integer>를 사용하여 데이터 저장 후 Collections.sort() 메서드로 정렬 후 제출하였는데 메모리 초과로 인한 실패
메모리 사용을 줄여보려고 BufferedWriter를 사용하지 않고 System.out.println()으로 출력을 시도했더니 시간 초과로 인한 실패
이후 StringBuilder를 사용하여 출력을 시도해 봤으나 메모리 초과로 인한 실패
그래서 그냥 Arrays.sort() 메서드를 사용하는 코드로 변경 후 BuffereWriter를 사용한 출력 코드로 시도를 해봤더니 성공
아무래도 Collections.sort() 메서드의 로직이 Arrays.sort() 메서드의 로직에 비해 메모리 사용량이 더 많거나
import로 인한 메모리 사용량 증가가 원인이지 않을까 싶지만.. 백준에서 실패한 코드에 대해선 메모리 사용량을 제공하지 않기 때문에 비교를 해볼 수 없었다.
따로 테스트를 진행하여 비교를 해볼 수 있겠지만.. 그냥 넘어가기로 했다.
코드를 업로드해 둔 깃 허브
'Develop > Algorithm' 카테고리의 다른 글
프로그래머스 Lv.2 - 60057 문자열 압축 (0) | 2022.07.26 |
---|---|
백준 실버V - 17478 재귀함수가 뭔가요? (0) | 2022.07.26 |
백준 실버V - 2751 수 정렬하기 (0) | 2022.07.26 |
백준 브론즈II - 5622 다이얼 (0) | 2022.07.26 |
프로그래머스 Lv.1 - 12930 이상한 문자 만들기 (0) | 2022.07.26 |