https://www.acmicpc.net/problem/2751
[ 문제 ]
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
[ 입력 ]
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다.
둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다.
수는 중복되지 않는다.
[ 출력 ]
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
[ 입출력 예시 ]
예제 입력 | 예제 출력 |
---|---|
5 5 4 3 2 1 | 1 2 3 4 5 |
이번 문제에서 배열을 이용해서 sort하면 "시간 초과"로 해결에 실패한다.
1. 몇 개의 숫자를 넣을 것인지 입력 받기 위한 변수(N)을 선언하여 값을 받아준다.
2. ArrayList를 이용해서 풀어주기 위해 ArrayList를 하나 선언하여준다.(list)
3. 0부터 N까지 루프를 돌려 값들을 리스트에 add 시켜준다.
4. Collections.sort(list)시켜 리스트를 오름차순 배열 정리해준다.
5. list의 값들을 StringBuilder에 한 값씩 개행시키며 넣어주고 StringBuilder를 출력하여준다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i=0; i<N; i++) {
list.add(Integer.parseInt(br.readLine()));
}
Collections.sort(list);
for(int n : list) {
sb.append(n + "\n");
}
System.out.println(sb.toString());
}
}
이번 문제를 통해서
을 배우게 되었다. 곧 정리해서 벨로그에 작성하겠다.