353 단어
2 분
백준 10989번 C++ 풀이
2025-03-07

백준 10989번 문제 c++ 풀이#

문제#

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

입력#

첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다.

출력#

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

예제 입력#

입력:
10
5
2
3
1
4
2
3
5
1
7

출력:
1
1
2
2
3
3
4
5
5
7

아이디어#

  1. 숫자를 입력받습니다.
  2. sort를 이용해 정렬합니다.

1차 시도#

#include <algorithm>
#include <iostream>

using namespace std;

int N;
int* arr;

int main()
{
    cin >> N;

    arr = new int[N];

    for (int i = 0; i < N; ++i) cin >> arr[i];

    sort(arr, arr + N);

    for (int i = 0; i < N; ++i) cout << arr[i];
}
결과

메모리초과

실패 원인#

애초에 문제 조건에 N이 10,000,000까지 되는데 각 숫자는 또 10,000까지 나올 수 있어 최소 short 자료형을 써야하기에 최대 용량은 20MB입니다. 하지만 정렬 문제라 순서가 상관없기에 10,000칸짜리 배열만들고 각 인덱스를 입력된 숫자로 취급하여 적용하면 풀 수 있습니다. 하지만 저는 답지를 보고 안 것이기에 문제를 풀지 않았습니다.