728x90
728x90

문제

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
 

 

알고리즘 분류

  • 정렬

 

문제 출처

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

 

2751번: 수 정렬하기 2

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

www.acmicpc.net

 


 

문제 해결 방법

  • $n \log n$의 시간 복잡도를 가지는 정렬 알고리즘을 사용해야 풀 수 있는 문제이다.
  • 퀵 소트(Quick Sort)로 구현되어 있는 @sort()@ 함수를 이용하여 무난하게 문제를 풀 수 있었다.

 

코드

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int N, num;
vector<int> nums;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    cin >> N;

    for (int i = 0; i < N; i++) {
        cin >> num;

        nums.push_back(num);
    }
    sort(nums.begin(), nums.end());    // 오름차순 정렬

    for (int i : nums) {
        cout << i << '\n';
    }
    
    return 0;
}

 

채점 결과

 

참고

  • [단계별로 풀어보기] > [정렬]
  • 실버V

 

정렬 방법 별 시간 복잡도

728x90
728x90

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ-1541][C++] 잃어버린 괄호  (0) 2023.02.20
[BOJ-11399][C++] ATM  (0) 2023.02.09
[BOJ-1931][C++] 회의실 배정  (0) 2023.02.06
[BOJ-11047][C++] 동전 0  (2) 2023.02.06
[BOJ-25305][C++] 커트라인  (0) 2023.02.04
[BOJ-2587][C++] 대표값2  (0) 2023.02.04
[BOJ-2750][C++] 수 정렬하기  (0) 2023.02.04
[BOJ-10757][C++] 큰 수 A+B  (0) 2023.02.04