์ด ์˜์—ญ์„ ๋ˆ„๋ฅด๋ฉด ์ฒซ ํŽ˜์ด์ง€๋กœ ์ด๋™
caputdraconis ๋ธ”๋กœ๊ทธ์˜ ์ฒซ ํŽ˜์ด์ง€๋กœ ์ด๋™

caputdraconis

ํŽ˜์ด์ง€ ๋งจ ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€๊ธฐ

caputdraconis

๋„คํŠธ์›Œํฌ ๊ด€์ ์—์„œ์˜ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์„ ๊ณต๋ถ€ํ•˜๋Š” ์ค‘์ž…๋‹ˆ๋‹ค :)

[C++] pair vector๋ฅผ sort! ๋‘๋ฒˆ์งธ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ๋„ ์ •๋ ฌ ๊ฐ€๋Šฅํ•˜๋‹ค๊ฑฐ!

  • 2021.08.06 06:57
  • ๐Ÿฅš๊ณ ๋ฆฌ์ฆ˜
๊ธ€ ์ž‘์„ฑ์ž: caputdraconis
๋ฐ˜์‘ํ˜•
 vector<pair<int, int> > v1;
 vector<pair<string, int>> v2;
 vector<pair<int, double>> v3;

์ขŒํ‘œ, ์ด๋ฆ„์ด ๋”ฐ๋กœ ์žˆ๋Š” ์ˆซ์ž ๋“ฑ์„ ๋‹ด์„ ๋•Œ ์ž์ฃผ ์“ฐ๋Š” pair๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฒกํ„ฐ๋ฅผ ์ •๋ ฌํ•˜๊ณ ์ž ํ•œ๋‹ค..! 

 

 

// test.cpp
#include <bits/stdc++.h>
using namespace std;

int main()
{
    vector<pair<int, int> > v;
    v.push_back(make_pair(1, 2));
    v.push_back(make_pair(1, 0));
    v.push_back(make_pair(2, 0));
    v.push_back(make_pair(2, 2));

    sort(v.begin(), v.end());
    for (int i = 0; i < 4; ++i)
    {
        cout << v[i].first << " " << v[i].second << "\n";
    }
}

์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด  

// output of test.cpp
1 0
1 2
2 0
2 2

์ด์ฒ˜๋Ÿผ first ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ, first ๊ฐ’์ด ๊ฐ™์„ ๋•Œ๋Š” second ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ. ์ด ๊ทœ์น™์„ ๊ฐ€์ง€๊ณ  ์ •๋ ฌ๋œ๋‹ค. 

 

๊ทผ๋ฐ!! ์—ฌ๊ธฐ์„œ ์กฐ๊ธˆ ๋” ๊น๊นํ•œ ๊ธฐ์ค€์„ ๋„ฃ๊ณ  ์‹ถ๋‹ค๋ฉด..? 

 

์˜ˆ๋ฅผ ๋“ค์–ด first ๊ฐ’์„ ๊ธฐ์ค€ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๋˜, first ๊ฐ’์ด ๊ฐ™์„ ๋•Œ๋Š” second ๊ฐ’์„ ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด!?

 

 

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค! 

sort ํ•จ์ˆ˜์— ์„ธ๋ฒˆ์งธ ์ธ์ž๋กœ ์ž๊ธฐ๊ฐ€ ์›ํ•˜๋Š” ๊ธฐ์ค€์„ ๋ฆฌํ„ดํ•˜๋Š” boolean ํ•จ์ˆ˜๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ทธ ๊ธฐ์ค€์„ ์ง์ ‘ ๋งŒ๋“ค์–ด๋ณด์ž. 

// modified_test.cpp
bool compare(const pair<int, int> &a, const pair<int, int> &b)
{
    if (a.first == b.first) // first ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด?
    {
        return a.second > b.second; second ๊ฐ’์ด ๋” ํฐ๊ฒŒ ์•ž์œผ๋กœ ๊ฐ€๊ฒŒ ํ•ด๋ผ!
    }
    return a.first < b.first; // first ๊ฐ’์ด ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด ๋” ํฐ ๊ฐ’์ด ๋’ค๋กœ ๊ฐ€๊ฒŒ ํ•ด๋ผ!
}

์ด๋Ÿฌํ•œ ํ•จ์ˆ˜๋ฅผ sort ํ•จ์ˆ˜ ์„ธ๋ฒˆ์งธ ์ธ์ž๋กœ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ์•„๋ž˜์ฒ˜๋Ÿผ ๋ง์ด๋‹ค!

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

 

 

์ด๋ ‡๊ฒŒ ๊ทœ์น™์„ ๋„ฃ์–ด์ฃผ๋ฉด ์•„๊นŒ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ์šฐ๋ฆฌ์˜ ์˜๋„๋Œ€๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€ํ•˜๊ฒŒ ๋œ๋‹ค!

// output of modified_test.cpp
1 2
1 0
2 2
2 0

 

 

 


bool compare(const pair<int, int> &a, const pair<int, int> &b)
{
    if (a.first == b.first)
    {
        return a.second > b.second;
    }
    return a.first < b.first;
}

์œ„์—์„œ ์ถ”๊ฐ€ํ•ด์คฌ๋˜ ํ•จ์ˆ˜๋ฅผ ๋” ์™€๋‹ฟ๊ฒŒ ์ดํ•ดํ•˜๋ ค๋ฉด a๋ฅผ ์ •๋ ฌ๋œ ๋ฒกํ„ฐ ๊ธฐ์ค€ ์•ž์˜ ์›์†Œ, b๋ฅผ ๋’ค์˜ ์›์†Œ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๋ณด๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

์šฐ๋ฆฌ์˜ ์˜๋„๋Œ€๋กœ ์ •๋ ฌ๋œ ๋ฒกํ„ฐ๋ผ๋ฉด..

๋‘ ์›์†Œ์˜ first ๊ฐ’์ด ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด ์•ž์— ์žˆ๋Š” ์›์†Œ(a)์˜ fisrt ๊ฐ’์ด ๋” ์ž‘์„ ๊ฒƒ์ด๋‹ค. ์ด๋Š” ์œ„ ์ฝ”๋“œ์—์„œ if ๋ฌธ์— ํ•ด๋‹นํ•˜์ง€ ์•Š์œผ๋‹ˆ ๊ฐ€์žฅ ์•„๋ž˜์˜ return ๋ฌธ์ด ์‹คํ–‰๋  ๊ฒƒ์ด๋‹ค. ์ด๋Š” ์•ž์— ์žˆ๋Š” ์›์†Œ(a)์˜ first ๊ฐ’์ด ๋’ค์— ์˜ค๋Š” ์›์†Œ(b)์˜ first ๊ฐ’๋ณด๋‹ค ์ž‘๊ฒŒ ํ•ด! ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

๋‘ ์›์†Œ์˜ first ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ์•ž์— ์žˆ๋Š” ์›์†Œ(a)์˜ second ๊ฐ’์ด ๋’ค์— ์˜ค๋Š” ์›์†Œ(b)์˜ second ๊ฐ’๋ณด๋‹ค ์ž‘์„ ๊ฒƒ์ด๋‹ค. ์ด๋Š” ์œ„ ์ฝ”๋“œ์—์„œ if๋ฌธ์— ํ•ด๋‹นํ•˜๊ฒŒ ๋˜๊ณ , ์กฐ๊ฑด๋ฌธ ์•ˆ์˜ return ๋ฌธ์ด ์‹คํ–‰๋  ๊ฒƒ์ด๋‹ค. ์ด๋Š” ์•ž์— ์žˆ๋Š” ์›์†Œ(a)์˜ second ๊ฐ’์ด ๋’ค์— ์˜ค๋Š” ์›์†Œ(b)์˜ second ๊ฐ’๋ณด๋‹ค ํฌ๊ฒŒ ํ•ด! ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€

์ด ๊ธ€ ๊ณต์œ ํ•˜๊ธฐ

  • ๊ตฌ๋…ํ•˜๊ธฐ

    ๊ตฌ๋…ํ•˜๊ธฐ

  • ์นด์นด์˜คํ†ก

    ์นด์นด์˜คํ†ก

  • ๋ผ์ธ

    ๋ผ์ธ

  • ํŠธ์œ„ํ„ฐ

    ํŠธ์œ„ํ„ฐ

  • Facebook

    Facebook

  • ์นด์นด์˜ค์Šคํ† ๋ฆฌ

    ์นด์นด์˜ค์Šคํ† ๋ฆฌ

  • ๋ฐด๋“œ

    ๋ฐด๋“œ

  • ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ

    ๋„ค์ด๋ฒ„ ๋ธ”๋กœ๊ทธ

  • Pocket

    Pocket

  • Evernote

    Evernote

๋‹ค๋ฅธ ๊ธ€

  • [c++] scanf & cin ์†๋„ ์ฐจ์ด(์ž…๋ ฅ ์‹œ๊ฐ„ ์ดˆ๊ณผ)

    [c++] scanf & cin ์†๋„ ์ฐจ์ด(์ž…๋ ฅ ์‹œ๊ฐ„ ์ดˆ๊ณผ)

    2021.08.27
  • [C++] pair vector๋ฅผ sort! ๋“ค์–ด์˜จ ์ˆœ์„œ๋„ ๊ธฐ์ค€์œผ๋กœ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค๊ฑฐ!

    [C++] pair vector๋ฅผ sort! ๋“ค์–ด์˜จ ์ˆœ์„œ๋„ ๊ธฐ์ค€์œผ๋กœ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค๊ฑฐ!

    2021.08.06
  • [MAC] bits/stdc++.h ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•

    [MAC] bits/stdc++.h ์‚ฌ์šฉํ•˜๋Š” ๋ฒ•

    2021.07.30
  • [C++]๋ฐฑ์ค€ 1100๋ฒˆ ํ•˜์–€ ์นธ

    [C++]๋ฐฑ์ค€ 1100๋ฒˆ ํ•˜์–€ ์นธ

    2020.07.14
๋‹ค๋ฅธ ๊ธ€ ๋” ๋‘˜๋Ÿฌ๋ณด๊ธฐ

์ •๋ณด

caputdraconis ๋ธ”๋กœ๊ทธ์˜ ์ฒซ ํŽ˜์ด์ง€๋กœ ์ด๋™

caputdraconis

  • caputdraconis์˜ ์ฒซ ํŽ˜์ด์ง€๋กœ ์ด๋™

๊ฒ€์ƒ‰

๋ฉ”๋‰ด

    ์นดํ…Œ๊ณ ๋ฆฌ

    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (168)
      • Cloud (3)
      • Computer Network (12)
      • Database (2)
      • Terraform (2)
      • ๐Ÿฅš๊ณ ๋ฆฌ์ฆ˜ (13)
      • ๊ฒ…๋ถ€๊ฒ…๋ถ€๐Ÿ™ƒ (10)
        • Naver CS50 ์ฝ”์นญ์Šคํ„ฐ๋”” (2)
        • Machine Learning (1)
        • Computing System (6)
      • ์–ธ์–ด&ํ”„๋ ˆ์ž„์›Œํฌ (20)
        • Python (4)
        • Django (10)
        • Node JS (1)
        • C++ (2)
        • Java (1)
        • Flutter (2)
      • Security (76)
        • WebHacking Study (11)
        • ์ง€์˜ฅ๋ฐฉ ์Šคํ„ฐ๋”” (22)
        • ์—ฌ๋ฆ„๋ฐฉํ•™ ์Šคํ„ฐ๋”” (2)
        • PWN Study (6)
        • SUA Reversing Study (3)
        • PWN (3)
        • WebHacking (20)
        • Reversing (4)
      • ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋„์›€๋˜์ง€ ์•Š์„๊นŒ,,? (23)
      • ์ผ์ƒ๋‹ค๋ฐ˜์‚ฌ (1)
      • ๊ทผํ™ฉ ์ •๋ฆฌ (1)
      • 42 Seoul (1)
        • Setting (1)

    ์ตœ๊ทผ ๊ธ€

    ์ธ๊ธฐ ๊ธ€

    ๋Œ“๊ธ€

    ๊ณต์ง€์‚ฌํ•ญ

    ์•„์นด์ด๋ธŒ

    ํƒœ๊ทธ

    • ๋ฆฌ์ŠคํŠธํ•จ์ˆ˜
    • ํŒŒ์ด์ฌ
    • ํŒŒ์ด์ฌ๊ธฐ์ดˆ
    • ํŒŒ์ด์ฌํ•จ์ˆ˜
    • old-16
    • ๋“œ๋ฆผํ•ต
    • Python
    • ์›นํ•ดํ‚น.kr

    ๋‚˜์˜ ์™ธ๋ถ€ ๋งํฌ

    • Github
    • solved.ac
    • caputdraconis@kakao.com

    ์ •๋ณด

    caputdraconis์˜ caputdraconis

    caputdraconis

    caputdraconis

    ๋ธ”๋กœ๊ทธ ๊ตฌ๋…ํ•˜๊ธฐ

    • ๊ตฌ๋…ํ•˜๊ธฐ
    • RSS ํ”ผ๋“œ

    ๋ฐฉ๋ฌธ์ž

    • ์ „์ฒด ๋ฐฉ๋ฌธ์ž
    • ์˜ค๋Š˜
    • ์–ด์ œ

    ํ‹ฐ์Šคํ† ๋ฆฌ

    • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
    • ์ด ๋ธ”๋กœ๊ทธ ๊ด€๋ฆฌํ•˜๊ธฐ
    • ๊ธ€์“ฐ๊ธฐ
    Powered by Tistory / Kakao. Copyright © caputdraconis.

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”