Algorithm

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

Hyeon Lee 2022. 11. 22. 16:08
728x90

 

2751번: 수 정렬하기 2 (acmicpc.net)

 

2751번: 수 정렬하기 2

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net

 

백준 2751 수 정렬하기 2 문제이다.

 

이 문제는 순수하게 그냥 나열해두고 sorting만 해주면 끝나는 문제이다.

 

처음에는 Arrays.sort()로 실시했는데 시간초과가 나서 Collections.sort()로 실시했다. 사실 그래도 시간초과가 났다. 이해가 잘 안되어서 고민을 했는데 StringBuilder로 해보니까 바로 정답을 맞출 수 있었다.

 

package selftest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main_2751 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		
		List<Integer> list = new ArrayList<Integer>();
		
		for(int i = 0; i<N; i++) {
			int num = Integer.parseInt(br.readLine());
			list.add(num);
			
		}
		
		Collections.sort(list);
		StringBuilder sb = new StringBuilder();
		for(int i = 0; i<list.size(); i++) {
			sb.append(list.get(i)).append('\n');
		}
		System.out.println(sb.toString());
	}
}

 

이렇게 ArrayList 안에서 add로 num을 입력받고 Collections.sort()로 sorting하고 StringBuilder로 append 시켜줄 때 list의 size만큼 get()으로 받아와서 개행해서 뽑아주면 된다.

 

여러가지 Framework를 써서 문제를 풀었지만 아마도 배열 Arrays.sort()에다 StringBuilder를 취해주었으면 정답이 나오지 않았을까 한다.

728x90