๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“• STUDY/Algorithm

[C / C++] ๋ฐฑ์ค€ 10989๋ฒˆ - ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3

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

 

10989๋ฒˆ: ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3

์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 10,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด ์ˆ˜๋Š” 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

www.acmicpc.net

โœ… ๋ฌธ์ œ ์„ค๋ช…

์ˆซ์ž N์„ ์ž…๋ ฅํ•œ ํ›„ N๊ฐœ์˜ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜๋ฉด,

N๊ฐœ์˜ ์ˆซ์ž๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.


โœ… ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๋ช…

 

1. C++ STL sort()

์ฒ˜์Œ์—๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ C++ STL ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ ฌ์„ ํ–ˆ๋‹ค.

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL); cout.tie(NULL);

    int n;
    cin >> n;

    vector<int> v;
    while (n--) {
        int a;
        cin >> a;
        v.push_back(a);
    }

    sort(v.begin(), v.end());

    for (int i = 0; i < v.size(); i++) {
        cout << v[i] << '\n';
    }
    return 0;
}

 

๊ทธ ๊ฒฐ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค.

 

N์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ตœ๋Œ€ 10,000,000๊ฐœ๊ฐ€ ์ฃผ์–ด์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—

N์˜ ๊ฐœ์ˆ˜ ๋งŒํผ๋งŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•œ๋‹ค๊ณ  ์ณ๋„ ํ•˜๋‚˜๋‹น 4byte์”ฉ ์ด 40,000,000byte = 40MB๊ฐ€ ๋œ๋‹ค.

 

๋”ฐ๋ผ์„œ ์ด ๋ฌธ์ œ์˜ ์กฐ๊ฑด์ธ 8MB๋ฅผ ํ•œ์ฐธ ๋ฒ—์–ด๋‚˜๋Š” ๊ฒƒ์ด๋‹ค.

 

2. ๋ฐฐ์—ด ์‚ฌ์šฉ

 

๋”ฐ๋ผ์„œ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹Œ ์ˆซ์ž ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์ฃผ์–ด ์‚ฌ์šฉํ–ˆ๋‹ค.

 

 

1) N๊ฐœ์˜ ์ˆ˜๋Š” ๋ชจ๋‘ 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜๋ผ๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์„ 10,000๊ฐœ ๋งŒ๋“ค์–ด์ค€๋‹ค.

2) ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ๋งˆ๋‹ค ๋ฐฐ์—ด์— 1์”ฉ ๋”ํ•ด์ฃผ์–ด ํ•ด๋‹น ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ์ €์žฅํ•œ๋‹ค.

3) ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๊ฐœ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ด์„œ ๊ฐ™์€ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.


โœ… ์ฝ”๋“œ