Algorithm/Baekjoon

[Baekjoon] C++ 1312번 - 수 정렬하기 2 (Silver 5)

유제필 2022. 11. 21. 17:07

수 정렬하기 2

 

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 256 MB 224808 64544 44872 30.458%

문제

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

입력

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

출력

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

예제 입력 1 복사

5
5
4
3
2
1

예제 출력 1 복사

1
2
3
4
5

 

정답

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
    
    int N, number;
    
    vector<int> result;
    
    cin >> N;
    
    for(int i = 0; i < N; i++) {
        cin >> number;
        result.push_back(number);
    }
    
    // 오름차순 정렬
    sort(result.begin(), result.end());
    
    for(int i = 0; i < N; i++) {
        cout << result[i] << '\n';
    }

    return 0;
}

 

문제 풀이

하나하나 입력 받고 sort 함수를 이용해 정렬한다.

버블 정렬같이 시간 복잡도가 느린 정렬 방식들은 모두 실패한다.

 

나중에 값 출력할 때도 endl;로 줄 바꿈 시 시간을 많이 잡아먹어 '\n' 줄 바꿈 형식을 사용했다.