반응형
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
반응형
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
728x90
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
#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++] 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 |