반응형
백준 링크
https://www.acmicpc.net/problem/15688
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
10 초 | 128 MB | 9359 | 4487 | 3367 | 49.874% |
문제
N개의 수가 주어졌을 때, 이를 비내림차순으로 정렬하는 프로그램을 작성하시오.
길이가 K인 수열 A가 A1 ≤ A2 ≤ ... ≤ AK-1 ≤ AK를 만족하면, 비내림차순이라고 한다.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이며, 같은 수가 여러 번 중복될 수도 있다.
출력
첫째 줄부터 N개의 줄에 비내림차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
예제 입력 1 복사
5
5
4
3
2
1
예제 출력 1 복사
1
2
3
4
5
예제 입력 2 복사
5
1
2
1
2
1
예제 출력 2 복사
1
1
1
2
2
코드 풀이
기본적인 sort함수를 이용하여 정렬하면 되는문제이다.
하지만 그냥 sort함수만 사용하게되면 시간 초과가 나게 된다.
그래서 아래와 같은것을 적어야합니다.
ios::sync_with_stdio(false);
장점 : 동기화를 비활성화 시켜 입출력간의 성능이 향상 된다.
단점 : 동기화를 비활성화 시켰기 때문에 멀티쓰레드 환경에서 출력 순서를 보장할 수 없다.
cout.tie(NULL);
장점 : 입력과 출력을 병렬로 처리할 때 입출력 버퍼를 비우는 오버헤드를 줄일 수 있습니다
단점 : 출력이 지연될 수 있으며, 프로그램이 예상치 못한 시점에서 출력될 수 있습니다.
cin.tie(NULL);
장점 : 입력과 출력을 병렬로 처리할 때 입출력 버퍼를 비우는 오버헤드를 줄일 수 있습니다
단점 : 출력이 버퍼에 남아 있을 수 있으며, 이는 예상치 못한 결과를 초래할 수 있습니다.
위 코드들은 시간을 줄이는데 도움이 될 수 있지만 코테에 한해서만 사용하는것을 추천합니다.
코드
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cout.tie(NULL);
cin.tie(NULL);
int Count;
cin >> Count;
vector<int> vec;
int Number = 0;
for (int i = 0; i < Count; ++i)
{
cin >> Number;
vec.push_back(Number);
}
sort(vec.begin(), vec.end());
for (int i = 0; i < Count; ++i)
{
cout << vec[i] << '\n';
}
}
반응형
'백준' 카테고리의 다른 글
백준 : 1181번 단어 정렬(c++) (0) | 2023.09.23 |
---|---|
백준 : 7795번 먹을 것인가 먹힐 것인가(c++) (0) | 2023.09.19 |
백준 : 1158번 요세푸스 문제 (c++) (0) | 2023.09.15 |
백준 : 5719번 거의 최단 경로 다익스트라(c++) (0) | 2023.09.12 |
백준 : 1854번 K번째 최단경로 찾기 다익스트라(c++) (0) | 2023.09.10 |
댓글