본문 바로가기

코테 준비

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

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

 

문제

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

입력

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

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

풀이 과정

1. 저번 문제와 출력 결과물은 같은데, Arrays.sort를 쓰면 시간초과로 오답이 나온다.

2. 다른 알고리즘도 마찬가지라 검색을 해보니 Collections.sort 라는 함수를 사용하는 것이 있었다.

- 참고 링크

1) st-lab.tistory.com/106

2) wjheo.tistory.com/entry/Java-%EC%A0%95%EB%A0%AC%EB%B0%A9%EB%B2%95-Collectionssort

 

Java 정렬방법 Collections.sort()

- Java 정렬 방법 Java 에서의 정렬은 java.util.Collections클래스의 static 메소드인 sort()를 이용한다. 먼저, API문서를 살펴보면  오버로딩 된 두개의 sort() 메소드가 있음을 확인할 수 있다. 차례대로 알

wjheo.tistory.com

3. 위 함수를 사용해서 코드를 짰다. 해놓고보니 계속 오류가 나서 참고링크 1번에 있는 분의 코드를 참고했더니 거의 빼다 박아서 내가 푼 건지 모르겠다.. for문에 int value : list는 처음보는 형식이라 좀 당황했었다.

 

import java.util.*;
 
public class Main {
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		StringBuilder sb = new StringBuilder();
		int N = scanner.nextInt();
		ArrayList<Integer> list = new ArrayList<>();
        
		for(int i=0; i<N; i++) {
			list.add(scanner.nextInt());
		}
		
		Collections.sort(list);
		
		for(int value : list) {
			sb.append(value).append('\n');
		}
		System.out.println(sb);
	}
}