728x90
2751
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
코드
//2751 수 정렬하기 2
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, num;
cin >> N;
vector <int> vec;
for (int i = 0; i < N; i++) {
cin >> num;
vec.push_back(num);
}
sort(vec.begin(), vec.end());
for (int i = 0; i < N; i++) {
cout << vec[i] << "\n";
}
return 0;
}
설명
N개의 수를 입력받아 오름차순으로 정렬한다.
정렬하는 함수는 #include <algorithm> 함수에서 sort함수를 사용한다.
sort함수로 오름차순으로 정렬하여 출력한다.
하지만, 이번 문제에서 시간제한이 있어 시간을 줄이는게 관건이다.
cin과 cout은 scanf와 printf보다 시간이 오래걸린다.
cin과 cout의 시간을 줄이기 위해서
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
다음과 같은 코드를 추가하면 시간을 줄일 수 있다.
더 자세한 설명은
2021.04.10 - [알고리즘] - 알고리즘(C++) / cin, cout 입출력 속도 높이기
에서 하겠다.
결과
고찰
기본적은 문제를 풀기위해서 풀었지만 시간초과로 인하여 풀지 못하였다.
기본적인 코드 습관이 cin과 cout을 사용을 많이하고 endl을 사용하는데 이 습관을 고쳐 printf와 scanf로 사용하거나
시간을 단축하는 코드를 작성하여 문제를 풀어야 할거같다.
난이도
◐○○○○
728x90
'알고리즘 > 백준' 카테고리의 다른 글
알고리즘(C++) / 백준 11651 : 좌표 정렬하기 2 (0) | 2021.04.11 |
---|---|
알고리즘(C++) / 백준 11650 : 좌표 정렬하기 (0) | 2021.04.10 |
알고리즘(C++) / 백준 2873 : 롤러코스터 (0) | 2021.04.09 |
알고리즘(C++) / 백준 1969 : DNA (0) | 2021.04.03 |
알고리즘(C++) / 백준 1700 : 멀티탭 스케줄링 (0) | 2021.03.30 |
댓글