[๋ฐฑ์ค€] 10814 ๋‚˜์ด์ˆœ ์ •๋ ฌ - ์ •๋ ฌ

2024. 8. 24. 19:32ยท๐Ÿ’ป Algorithms/๋ฐฑ์ค€

[ ๋ฌธ์ œ๋งํฌ ]

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

 

๐Ÿšฉ ์กฐ๊ฑด

  1. ์ฒซ์งธ ์ค„์— ์˜จ๋ผ์ธ ์ €์ง€ ํšŒ์›์˜ ์ˆ˜ N์ด ์ฃผ์–ด์ง (1 ≤ N ≤ 100,000)
  2. ๊ฐ N๊ฐœ์˜ ์ค„์— ํšŒ์›์˜ ๋‚˜์ด์™€ ์ด๋ฆ„์ด ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์ฃผ์–ด์ง
  3. ํšŒ์›์„ ๋‚˜์ด ์ˆœ, ๋‚˜์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ๊ฐ€์ž…ํ•œ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ๋‚˜์ด์™€ ์ด๋ฆ„์„ ์ถœ๋ ฅํ•ด๋ผ

 

 

๐Ÿšฉ ์ ‘๊ทผ

3 -> vector<pair<๋‚˜์ด, ์ด๋ฆ„>>์„ ๋งŒ๋“ค์–ด์„œ  sort ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜์ž

 

 

๐Ÿšฉ ์‹œํ–‰์ฐฉ์˜ค

vector<pair<๋‚˜์ด, ์ด๋ฆ„>>์„ sort ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ •๋ ฌํ•˜๋ฉด ๊ฐ€์ž…์ˆœ์œผ๋กœ ์ •๋ ฌ๋ ๊ฑฐ๋ž€ ๋ณด์žฅ์ด ์—†๋‹ค. ๋”ฐ๋ผ์„œ <๋‚˜์ด, ๊ฐ€์ž…์ˆœ์„œ, ์ด๋ฆ„>์„ ์ €์žฅํ•˜๊ณ ์ž ํ•˜์˜€๊ณ , ์›์†Œ๊ฐ€ 3๊ฐœ์ด๋ฏ€๋กœ tuple์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

#include <tuple>

vector<tuple<int, int, string>> v;

// ์ƒˆ๋กœ์šด tuple์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์€ pair์™€ ์œ ์‚ฌํ•จ
v.push_back(make_tuple(age, i, name));

// tuple ์›์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•
get<0>(v[i]);	// ex) 21
get<1>(v[i]);	// ex) 2
get<2>(v[i]);	// ex) Yewon

 

๊ทธ๋ฆฌ๊ณ  sort ํ•จ์ˆ˜์— ์‚ฌ์šฉํ•  ์ƒˆ๋กœ์šด ์—ฐ์‚ฐ์ž๋ฅผ ์ •์˜ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ์ฒซ๋ฒˆ์งธ ์›์†Œ์˜ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด ๋‘๋ฒˆ์งธ ์›์†Œ์˜ ํฌ๊ธฐ์ˆœ์ด ๊ณง ์ˆœ์„œ๊ฐ€ ๋˜๊ณ , ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด ์ฒซ๋ฒˆ์งธ ์›์†Œ์˜ ํฌ๊ธฐ์ˆœ(์˜ค๋ฆ„์ฐจ์ˆœ)์ด ๊ณง ์ˆœ์„œ๊ฐ€ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ธ์ž์— ๋ ˆํผ๋Ÿฐ์Šค(&)๋ฅผ ๋ถ™์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ๋ฐœ์ƒ ํ™•๋ฅ ์„ ์ค„์ธ๋‹ค.(๊ฐ’ ๋ณต์‚ฌํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ์ฐธ์กฐ)

// ์ธ์ž์˜ ํƒ€์ž…์ด vector<tuple<int, int, string>>๊ฐ€ ์•„๋‹ˆ๋ผ
// tuple<int, int, string>์ž„์— ์œ ์˜
bool cmp(const tuple<int, int, string> &t1, const tuple<int, int, string> &t2){
    if(get<0>(t1)==get<0>(t2))
        return get<1>(t1) < get<1>(t2);
    return get<0>(t1) < get<0>(t2);
}

 

 

๐Ÿ’ป ์ฝ”๋“œ (C++)

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <tuple>
using namespace std;

vector<tuple<int, int, string>> v;

bool cmp(const tuple<int, int, string> t1, const tuple<int, int, string> t2){
    if(get<0>(t1)==get<0>(t2))
        return get<1>(t1) < get<1>(t2);
    return get<0>(t1) < get<0>(t2);
}

int main(){
    int N;
    cin >> N;
    
    for(int i=0; i<N; i++){
        int age; string name;
        cin >> age >> name;
        v.push_back(make_tuple(age, i, name));
    }
    sort(v.begin(), v.end(), cmp);
    
    for(int i=0; i<N; i++){
        cout << get<0>(v[i]) << " " << get<2>(v[i]) << "\n";
    }
}

 

+ stable_sort

<algorithm> ํ—ค๋”ํŒŒ์ผ์˜ stable_sort ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

stable_sort๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ™์€ ์›์†Œ๋“ค๋ผ๋ฆฌ๋Š” ์›๋ž˜์˜ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋„๋ก ํ•˜๋Š” ์ •๋ ฌ์ด๋‹ค. ์ด ๋•Œ ๋น„๊ตํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋“œ์‹œ ์ •์˜ํ•ด์•ผ stable_sort๊ฐ€ ์ž˜ ๋™์ž‘ํ•œ๋‹ค.

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

vector<pair<int, string>> v;

bool cmp(const pair<int, string> p1, const pair<int, string> p2) {
    return p1.first < p2.first;
}

int main() {
    int N;
    cin >> N;

    for (int i = 0; i < N; i++) {
        int age; string name;
        cin >> age >> name;
        v.push_back(make_pair(age, name));
    }
    stable_sort(v.begin(), v.end(), cmp);

    for (int i = 0; i < N; i++) {
        cout << v[i].first << " " << v[i].second << "\n";
    }
}

'๐Ÿ’ป Algorithms > ๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 11866 ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ0 - ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ  (0) 2024.08.27
[๋ฐฑ์ค€] 1181 ๋‹จ์–ด ์ •๋ ฌ - ์ •๋ ฌ  (0) 2024.08.25
[๋ฐฑ์ค€] 5397 ํ‚ค๋กœ๊ฑฐ - ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ  (0) 2024.08.24
[๋ฐฑ์ค€] 1260 DFS์™€ BFS - dfs, bfs  (0) 2024.08.20
[๋ฐฑ์ค€] 2164 ์นด๋“œ2 - ํ  (0) 2024.08.19
'๐Ÿ’ป Algorithms/๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 11866 ์š”์„ธํ‘ธ์Šค ๋ฌธ์ œ0 - ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
  • [๋ฐฑ์ค€] 1181 ๋‹จ์–ด ์ •๋ ฌ - ์ •๋ ฌ
  • [๋ฐฑ์ค€] 5397 ํ‚ค๋กœ๊ฑฐ - ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
  • [๋ฐฑ์ค€] 1260 DFS์™€ BFS - dfs, bfs
์ ๋„
์ ๋„
  • ์ ๋„
    ๋„์ 
    ์ ๋„
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (30)
      • ๐Ÿ’ป Algorithms (28)
        • ๋ฐฑ์ค€ (22)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
      • ๐Ÿ”Ž Deep Learning (0)
      • ๐Ÿ’ฅ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… (1)
      • ๐Ÿ•น Unity (1)
      • ๐Ÿฅ” ์ž‰ํ…… (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • Blog
    • Github
    • Velog
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
์ ๋„
[๋ฐฑ์ค€] 10814 ๋‚˜์ด์ˆœ ์ •๋ ฌ - ์ •๋ ฌ
์ƒ๋‹จ์œผ๋กœ

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