수 정렬하기 2

동동·2023년 4월 6일
0
post-thumbnail

수 정렬하기 2

레벨: 실버 5
날짜: 2023년 4월 6일 오후 10:24
문제번호: 2751
알고리즘: 정렬

시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초256 MB251673737455146930.704%

문제

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

입력

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

출력

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

예제 입력 1

5
5
4
3
2
1

예제 출력 1

1
2
3
4
5

풀이

단순히 sort 함수로 정렬하면 된다고 생각했다.

#include <iostream>
#include <algorithm> //sort함수

using namespace std;

int main() {

    int n;
    cin>>n;
    int arr[n];
    for(int i=0; i<n; i++) {
        cin>>arr[i];
    }

    sort(arr, arr+n); //sort(배열의 포인터, 배열의 포인터 + 배열의 크기)

    for(int i=0; i<n; i++) {
        cout<<arr[i]<<endl;
    }

    return 0;
}

그런데 시간초과가 나버렸다.

ios::sync_with_stdio(false);

cin.tie(NULL)

cout.tie(NULL)

의 중요함을 알게되었다.

또한 endl;말고 ‘\n’을 이제부터 계속 써야겠다.

#include <iostream>
#include <algorithm> //sort함수

using namespace std;

int main() {

    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int n;
    cin>>n;
    int arr[n];
    for(int i=0; i<n; i++) {
        cin>>arr[i];
    }

    sort(arr, arr+n); //sort(배열의 포인터, 배열의 포인터 + 배열의 크기)

    for(int i=0; i<n; i++) {
        cout<<arr[i]<<'\n';
    }

    return 0;
}
profile
알고리즘 문제를 주로 업로드합니다.

0개의 댓글