정리하고기록하자

백준 (JAVA) - 수 정렬하기 2 (2751) 본문

백준 - 알고리즘

백준 (JAVA) - 수 정렬하기 2 (2751)

정리하고기록하자 2022. 3. 3. 22:39
반응형

백준 - 알고리즘 정렬 수 정렬하기 2 (2751) 문제

 

문제 : N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

 

1. 정렬을 하기 위해서 sort 를 써야 한다는거 까지 생각했고

배열 선언 후 배열에 원소를 넣어 Arrays.sort()로 정렬 후 출력 해야 겠다고 접근 했다.

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

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		
		int[] a = new int[sc.nextInt()];
		
		for(int i = 0; i < a.length; i ++) {
			a[i] = sc.nextInt();
		}
		sc.close();
		
		Arrays.sort(a);
		
		for(int i = 0; i < a.length; i ++) {
			System.out.println(a[i]);
		}
		
	}

}

결과

 

시간 초과....


2. 그럼 List 에 담은 뒤 Collectios.sort() 로 정렬 후 출력 하기

 

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		
		ArrayList<Integer> list = new ArrayList<>();
		for(int i = 0; i < a; i++) {
			list.add(sc.nextInt());
		}
		Collections.sort(list);
		
		for(Integer value : list) {
			System.out.println(value);
		}
	}

}

 

결과

 

출력 결과는 같은데 시간 초과가 난다.


여기서 부터 구글링 

출력으로 Stringbuilder 를 사용하면 성능면에서 더 좋다.

Stringbuilder는 String과 문자열을 더할 때 새로운 객체를 생성하는 것이 아니라

기존의 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르고 상대적으로 부하가 적다.

 

import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		StringBuilder sb = new StringBuilder();
		int a = sc.nextInt();
		
		ArrayList<Integer> list = new ArrayList<>();
		for(int i = 0; i < a; i++) {
			list.add(sc.nextInt());
		}
		Collections.sort(list);
		
		for(Integer value : list) {
			sb.append(value).append("\n");
		}
		System.out.println(sb);
	}

}

반응형