๐ŸŒฒ Altu-Bitu/0906 ๋งต๊ณผ ์…‹

[BOJ S4][C++] ๋ฐฑ์ค€ 14911๋ฒˆ: ๊ถํ•ฉ ์Œ ์ฐพ๊ธฐ

์„ ๋‹ฌ 2022. 12. 30. 13:51
๋ฐ˜์‘ํ˜•

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

 

14911๋ฒˆ: ๊ถํ•ฉ ์Œ ์ฐพ๊ธฐ

์ฒซ์งธ ์ค„์— ๋นˆ ์นธ์œผ๋กœ ๊ตฌ๋ถ„๋œ ์ •์ˆ˜๊ฐ€ 2๊ฐœ ์ด์ƒ, 10๊ฐœ ์ดํ•˜ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ •์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ์ •์ˆ˜๋Š” 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ

์ฒซ์งธ ์ค„์— ์ฃผ์–ด์ง„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ •์ˆ˜ ์ค‘์—์„œ ํ•ฉ์ด ๋‘˜์งธ ์ค„์— ์ฃผ์–ด์ง„ ์ˆ˜์™€ ๊ฐ™์€ ์„œ๋กœ ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ๋Š” ๋‘ ์ˆ˜์˜ ์Œ์„ ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๊ณ  ๋งจ ์•„๋ž˜์— ์ด ์Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ด์–ด์„œ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋นˆ ์นธ์œผ๋กœ ๊ตฌ๋ถ„๋œ ์ •์ˆ˜๊ฐ€ 2๊ฐœ ์ด์ƒ, 10๊ฐœ ์ดํ•˜ ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ •์ˆ˜๊ฐ€ ํ•˜๋‚˜ ์ฃผ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง€๋Š” ์ •์ˆ˜๋Š” 100,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์ฐพ์€ ์ˆ˜์˜ ์Œ์„ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•˜๊ณ  ๋งจ ์•„๋žซ ์ค„์— ๊ทธ๋Ÿฌํ•œ ์Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๊ตฌ์„ฑ์€ ๊ฐ™์ง€๋งŒ, ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅธ ์Œ (a, b)์™€ (b, a)๋Š” ์Œ ํ•˜๋‚˜๋กœ ํ•˜๋ฉฐ, a ≤ b์ธ ์Œ์„ ์ถœ๋ ฅํ•œ๋‹ค.

์Œ์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ์—๋Š” ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค. (a, b)๊ฐ€ (c, d)๋ณด๋‹ค ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์•ž์„œ๋Š” ๊ธฐ์ค€์€ a < c์ด๊ฑฐ๋‚˜, a == c ์ด๋ฉด์„œ, b < d ์ธ ๊ฒƒ์ด๋‹ค.

 

ํ’€์ด

์ž…๋ ฅ ๊ฐฏ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€์ง€ ์•Š์•„์„œ ์ธํ„ฐ๋„ท์„ ์ฐธ๊ณ ํ–ˆ๋‹ค.

์ž…๋ ฅ๋ฐ›์€ ์ˆ˜๋“ค์„ map์œผ๋กœ ์ €์žฅํ•˜์—ฌ ๊ฐ ๊ฐ’์ด ๋ช‡๊ฐœ์”ฉ ์žˆ๋Š”์ง€๋ฅผ ๊ฐ’์˜ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•œ๋‹ค.

์ดํ›„ ์ด ๋งต์„ ์•ž์—์„œ๋ถ€ํ„ฐ ๋Œ๋ฉด์„œ ์ˆœ์„œ์Œ์„ ์ด๋ฃจ๋Š” ์ˆซ์ž๊ฐ€ ์žˆ๋Š”์ง€ ์ฒดํฌํ•˜๊ณ  ๊ฐฏ์ˆ˜๋ฅผ ์ค„์—ฌ๋‚˜๊ฐ€๋Š” ์‹์œผ๋กœ ์นด์šดํŠธ ๋ฐ ์ถœ๋ ฅ

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
#include <map>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    
    map<int, int> cnt; // cnt[i] = i์˜ ๊ฐฏ์ˆ˜
    
    int n;
    while(cin >> n)
        cnt[n]++;
    int target = n;

    int ans = 0;
    for(auto i: cnt) {
        int need = target - i.first;
        
        cnt[i.first]--;
        if(cnt[need] > 0) {
            cnt[need]--;
            cout << i.first << " " << need << "\n";
            ans++;
        }
    }
    cout << ans;
    
    
    return 0;
}

/*
 */
๋ฐ˜์‘ํ˜•