T'SPACE

다채로운 에디터들의 이야기

컴퓨터공학/알고리즘

[백준, C++] 2751, 수 정렬하기2

Tonny Kang 2024. 1. 20. 12:23
반응형

 

문제


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

반응형

입력


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

728x90

출력


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

셀렉스 코어프로틴 락토프리 파우더, 570g, 1개"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 

#include <iostream>
#include <queue>
#include <algorithm>

using namespace std;
int main() {
    int n;
    int temp;
    cin >> n;
    vector<int> numbers;
    for (int i = 0; i < n;i++) {
        cin >> temp;
        numbers.push_back(temp);
    }
    sort(numbers.begin(), numbers.end());
    for (int number : numbers) {
        cout << number<<'\n';
    }
}

사실 보면 어렵지 않은 정렬 문제입니다.

nlogn의 복잡도를 요구하는 정렬을 수행하기 위해 C++의 STL을 활용할 수 있습니다. `<algorithm>` 라이브러리를 추가하고, `sort()` 함수를 사용하여 vector를 간단히 정렬할 수 있습니다.

그러나 첫 제출에서 런타임 에러가 발생한 이유를 확인해보니 `endl`과 `'\n'`의 차이점 때문이었습니다.

`endl`은 호출될 때마다 버퍼를 flush하는 반면, `'\n'`은 그렇지 않습니다. 매번 버퍼를 flush하는 작업은 추가 부하를 일으키므로, 1,000,000개와 같은 많은 케이스가 있는 경우에는 성능에 영향을 줄 수 있습니다.

따라서 `'\n'`을 사용하면 더 효율적인 코드를 작성할 수 있습니다.

 

<[백준, C++] 2108번: 통계학>

https://tonnykang.tistory.com/50

 

[백준, C++] 2108번: 통계학

문제 수를 처리하는 것은 통계학에서 상당히 중요한 일이다. 통계학에서 N개의 수를 대표하는 기본 통계값에는 다음과 같은 것들이 있다. 단, N은 홀수라고 가정하자. 산술평균 : N개의 수들의 합

tonnykang.tistory.com

 

반응형

'컴퓨터공학 > 알고리즘' 카테고리의 다른 글

[백준,C++] 1920 : 수 찾기  (6) 2024.01.28
[백준,C++] 1181: 단어 정렬  (10) 2024.01.27
[백준, C++] 2108번: 통계학  (4) 2024.01.01
[백준,C++] 1966번: 프린터 큐  (2) 2023.11.25
[백준,C++] 1920번: 수 찾기  (2) 2023.11.24