[ Baekjoon ] 2751번 ( SILVER V ) : 수 정렬하기 2 (Java)

ma.caron_g·2022년 1월 11일
0
post-thumbnail

1. Problem 📃

[ 수 정렬하기 2 ]

https://www.acmicpc.net/problem/2751


[ 문제 ]

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


2. Input 📇

[ 입력 ]

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


3. Output 📠

[ 출력 ]

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


4. Example 📚

[ 입출력 예시 ]

예제 입력예제 출력
5
5
4
3
2
1
1
2
3
4
5

5. Solution 🔑

이번 문제에서 배열을 이용해서 sort하면 "시간 초과"로 해결에 실패한다.


1. 몇 개의 숫자를 넣을 것인지 입력 받기 위한 변수(N)을 선언하여 값을 받아준다.


2. ArrayList를 이용해서 풀어주기 위해 ArrayList를 하나 선언하여준다.(list)


3. 0부터 N까지 루프를 돌려 값들을 리스트에 add 시켜준다.


4. Collections.sort(list)시켜 리스트를 오름차순 배열 정리해준다.


5. list의 값들을 StringBuilder에 한 값씩 개행시키며 넣어주고 StringBuilder를 출력하여준다.

6. Code 💻

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());
	}

}

7. Growth 🍄

간혹 코드가 안 풀리면 "st-lab"이라는 tistory를 보는데 여기에 설명이 정말 잘 나와있다.
왜 배열로 풀었을 때 시간초과가 나는지 이유도 여기에 가면 볼 수 있다.

이번 문제를 통해서

  • 삽입 정렬
  • 이진 삽입 정렬
  • 병합(합병) 정렬
  • 팀 정렬
  • 카운팅 정렬

을 배우게 되었다. 곧 정리해서 벨로그에 작성하겠다.

profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글