[C++] ๋ฐฑ์ค BOJ 21939 ๋ฌธ์  ์ถ์ฒ ์์คํ  Version 1
/*
BOJ 21939 ๋ฌธ์  ์ถ์ฒ ์์คํ
 Version 1 ์ ์ฝ๋์
๋๋ค.
ํจ์จ์ ์ด์ง ์์ ํ์ด์ด๋,, ๋ค๋ฅธ ๋ถ์ ํ์ด๋ฅผ ์ฐธ๊ณ ํ์๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค..!
*/
๋ฌธ์  ๋งํฌ : https://www.acmicpc.net/problem/21939
21939๋ฒ: ๋ฌธ์  ์ถ์ฒ ์์คํ  Version 1
tony9402๋ ์ต๊ทผ ๊นํ์ ์ฝ๋ฉํ ์คํธ ๋๋น ๋ฌธ์ ๋ฅผ ์ง์  ๋ฝ์์ "๋ฌธ์  ๋ฒํธ, ๋์ด๋"๋ก ์ ๋ฆฌํด๋จ๋ค. ๊นํ์ ์ด์ฉํ์ฌ ๊ณต๋ถํ์๋ ๋ถ๋ค์ ์ํด ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํด๋ณด๋ ค๊ณ ํ๋ค. ๋ง๋ค๋ ค๊ณ ํ๋ ๋ช ๋ น
www.acmicpc.net

์ ๋ต ์ฝ๋
#include <bits/stdc++.h>
using namespace std;
int main(void)
{
    ios::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    multiset<pair<int, int>> hard; // ๋์ด๋ | ๋ฌธ์ ๋ฒํธ
    map<int, int> Map;             // ๋ฌธ์  ๋ฒํธ | ๋์ด๋
    int N, M, P, L;
    cin >> N;
    for (int i = 0; i < N; i++)
    {
        cin >> P >> L; // ๋ฌธ์  ๋ฒํธ | ๋์ด๋
        hard.insert(make_pair(L, P));
        Map[P] = L;
    }
    cin >> M;
    for (int i = 0; i < M; i++)
    {
        string cmd;
        int arg1, arg2;
        cin >> cmd;
        if (cmd == "recommend")
        {
            cin >> arg1; // 1 or -1
            if (arg1 == 1)
            {
                // ๊ฐ์ฅ ์ด๋ ต๊ณ  ๋ฌธ์  ๋ฒํธ๊ฐ ๊ฐ์ฅ ํฐ๊ฑฐ
                auto it = prev(hard.end());
                cout << it->second << "\n";
            }
            else
            {
                auto it = hard.begin();
                cout << it->second << "\n";
            }
        }
        else if (cmd == "add")
        {
            cin >> arg1 >> arg2; // ๋ฌธ์  ๋ฒํธ | ๋์ด๋
            hard.insert(make_pair(arg2, arg1));
            Map[arg1] = arg2;
        }
        else
        {
            cin >> arg1;
            int lev = Map[arg1];
            auto it = hard.find(make_pair(lev, arg1));
            hard.erase(it);
        }
    }
}
recommend์ add ๊น์ง๋ multiset ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ต๋๋ค.
ํ์ง๋ง solved ๋ช ๋ น์ ๋ฌธ์  ๋ฒํธ๊ฐ ์ฃผ์ด์ง๋ฉด, ๊ทธ ๋ฌธ์  ๋ฒํธ๋ฅผ second ๊ฐ์ผ๋ก ๊ฐ๊ณ ์๋ pair๋ฅผ set ์์์ ์ฐพ์์ผ ํ์ต๋๋ค. ์ด๋ ๋์ด๋ 1๋ถํฐ 100๊น์ง ๋ฐ๋ณต๋ฌธ์ ๋๋ ค์ find ํ ์ ์์ง๋ง, ํธ์๋ฅผ ์ํด map์ ์ด์ฉํ์ฌ key๋ก ๋ฌธ์  ๋ฒํธ(P), value๋ก ๋ฌธ์ ์ ๋์ด๋(L)์ ์ ์ฅํ์ต๋๋ค.
pair multiset์ ๊ฒฝ์ฐ first ๊ฐ์ด ๊ฐ๋ค๋ฉด, second ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ recommend ๋ช ๋ น์ด๋ฅผ ์คํํ ๋
๊ฐ์ฅ ์ฌ์ด ๋์ด๋ ์ค์์ ๊ฐ์ฅ ์์ ๋ฌธ์  ๋ฒํธ๋ฅผ ๊ฐ์ง ๋ฌธ์ ๋ multiset์ begin์ ์์นํ๊ณ  ์์๊ณ ,
๊ฐ์ฅ ์ด๋ ค์ด ๋์ด๋ ์ค์์ ๊ฐ์ฅ ํฐ ๋ฌธ์  ๋ฒํธ๋ฅผ ๊ฐ์ง ๋ฌธ์ ๋ multiset์ end์ ์์นํ๊ณ  ์์ด์ ํด๊ฒฐ์ด ์ฌ์ ์ต๋๋ค.
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
- 
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
 - 
์นด์นด์คํก
์นด์นด์คํก
 - 
๋ผ์ธ
๋ผ์ธ
 - 
ํธ์ํฐ
ํธ์ํฐ
 - 
Facebook
Facebook
 - 
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
 - 
๋ฐด๋
๋ฐด๋
 - 
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
 - 
Pocket
Pocket
 - 
Evernote
Evernote
 
๋ค๋ฅธ ๊ธ
- 
[Algorithms] String(Pattern) Matching
[Algorithms] String(Pattern) Matching
2023.06.01 - 
[Algorithms] Dynamic Programming
[Algorithms] Dynamic Programming
2023.05.26 - 
[C++] ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ(2021 ์นด์นด์ค ์ฑ์ฉ์ฐ๊ณํ ์ธํด์ญ ์ฝ๋ฉํ ์คํธ)
[C++] ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ(2021 ์นด์นด์ค ์ฑ์ฉ์ฐ๊ณํ ์ธํด์ญ ์ฝ๋ฉํ ์คํธ)
2021.11.03 - 
[Python] ์ซ์ ๋ฌธ์์ด๊ณผ ์๋จ์ด(2021 ์นด์นด์ค ์ฑ์ฉ์ฐ๊ณํ ์ธํด์ญ ์ฝ๋ฉํ ์คํธ)
[Python] ์ซ์ ๋ฌธ์์ด๊ณผ ์๋จ์ด(2021 ์นด์นด์ค ์ฑ์ฉ์ฐ๊ณํ ์ธํด์ญ ์ฝ๋ฉํ ์คํธ)
2021.11.03