[C++ 백준] 10989 수 정렬하기 3
728x90
반응형
블로그에 올리는 모든 문제 풀이는 깃허브에 올려져 있습니다.
문제 설명
- N(1 <=N <=10,000,000) 개의 정수가 주어진다.
둘째 줄은 N개의 10,000보다 작거나 같은 자연수가 주어진다.
이를 오름차순으로 정렬하는 프로그램을 작성하시오.
풀이 전략
- 배열의 인덱스를 특정한 데이터의 값으로 보며, 배열의 크기는 데이터의 범위를 포함할 수 있도록 설정했다. (=계수 정렬)
- cin, cout은 scanf, printf보다 속도가 느려서 시간 초과가 나므로, sync_with_stdio를 사용하여 속도를 향상한다.
- sync_with_stdio
- C 표준 stream과 C++ 표준 stream의 동기화를 끊는다.
- 동기화를 끊으면 사용하는 버퍼의 수가 줄어들어 속도가 향상됨 - cin.tie(NULL) / cout.tie(NULL)
- cin과 cout을 untie 한다.
- 사용 시 C 표준 입출력과 혼용하지 말아야 한다.
소스 코드
#include <iostream>
using namespace std;
int main()
{
ios_base::sync_with_stdio( false );
cin.tie( NULL );
cout.tie( NULL );
int n;
cin >> n;
int arr[ 10001 ] = { 0 };
for ( int i = 0; i < n; i++ )
{
int x;
cin >> x;
arr[ x ] += 1;
}
for ( int i = 0; i < 10001; i++ )
{
if ( arr[ i ] == 0 )
continue;
for ( int j = 0; j < arr[ i ]; j++ )
{
cout << i << '\n';
}
}
}
링크
https://www.acmicpc.net/problem/10989
728x90
반응형
'문제풀이 > BOJ' 카테고리의 다른 글
[C++ 백준] 1712 손익분기점 (0) | 2020.11.04 |
---|---|
[C++ 백준] 10809 알파벳 찾기 (0) | 2020.08.23 |
[C++ 백준] 2751 수 정렬하기 2 (0) | 2020.07.22 |
[C++ 백준] 1874 스택 수열 (0) | 2020.07.08 |
[C++ 백준] 11650 좌표 정렬하기 (0) | 2020.06.25 |
댓글
이 글 공유하기
다른 글
-
[C++ 백준] 1712 손익분기점
[C++ 백준] 1712 손익분기점
2020.11.04 -
[C++ 백준] 10809 알파벳 찾기
[C++ 백준] 10809 알파벳 찾기
2020.08.23 -
[C++ 백준] 2751 수 정렬하기 2
[C++ 백준] 2751 수 정렬하기 2
2020.07.22 -
[C++ 백준] 1874 스택 수열
[C++ 백준] 1874 스택 수열
2020.07.08