백준 10989: 수 정렬하기3

Se0ng_1l·2022년 7월 11일
0

백준

목록 보기
23/40

https://www.acmicpc.net/problem/10989

문제 접근

  1. 이 문제는 용량이 제한되어 있다. => 공간복잡도도 고려를 해야한다.
  2. 수를 입력받으면 그 수에 해당하는 배열의 원소가 가진 값을 증가시킨다.
  3. 해당 원소가 가진 값만큼 반복하여 출력하면 정렬된 수를 보여줄 수 있다.

⚠️ 입출력관련 시간초과

C++의 입출력은 C언어의 입출력 속도보다 굉장히 느리다.
따라서 입출력함수를 C언어의 함수를 사용한다면 시간초과를 개선할 수 있다.
하지만 고집부려 C++의 방식으로 입출력을 사용하고 싶다면 개선할 수 있는 방법이 있다.

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

참고 사이트 : https://hegosumluxmundij.tistory.com/54

위 코드를 메인함수 시작에 넣는다면 속도를 개선시킬 수 있다.

하지만, 흔히 우리가 알고리즘 문제를 푸는 상황은 싱글쓰레드이므로 큰 문제가 생기지 않지만,
실무에 들어가 멀티쓰레드를 사용할 경우에는 주의해야 한다고 한다.

필자는, C언어의 입출력방식을 사용해서 문제를 풀었다.

#include <iostream>
using namespace std;

int main()
{
    int num;
    cin >> num;
    int arr[10001] = {0};


    for(int i = 0; i < num; i++)
    {
        int temp;
        scanf("%d", &temp);
        arr[temp]++;
    }

    for(int i = 1; i < 10001; i++)
    {
        for(int j = 0; j < arr[i]; j++)
        {
            printf("%d\n", i);
        }
    }
}
profile
치타가 되고 싶은 취준생

0개의 댓글