๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Code Tree

[์ฝ”๋“œํŠธ๋ฆฌ] TreeSet ์—ฐ์Šต๋ฌธ์ œ

by xxilliant 2023. 2. 9.
728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ : top K ์ˆซ์ž

n๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ค‘๋ณต์„ ์ œ์™ธํ•˜๊ณ  ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ–ˆ์„ ๋•Œ ์•ž์— ์žˆ๋Š” k๊ฐœ์˜ ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด๋ณด์„ธ์š”.


์ž…๋ ฅ ํ˜•์‹

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์›์†Œ์˜ ๊ฐœ์ˆ˜ n๊ณผ k๊ฐ€ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์ค„์—๋Š” n๊ฐœ์˜ ์›์†Œ๊ฐ€ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

  • 1 ≤ k ≤ n ≤ 100,000
  • 1 ≤ ์ฃผ์–ด์ง€๋Š” ์›์†Œ ๊ฐ’ ≤ 

์ถœ๋ ฅ ํ˜•์‹

์ค‘๋ณต์„ ์ œ์™ธํ•˜๊ณ  ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ–ˆ์„ ๋•Œ ์•ž์— ์žˆ๋Š” k๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๊ณต๋ฐฑ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ค‘๋ณต์„ ์ œ์™ธํ–ˆ์„ ๋•Œ ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ k๋ณด๋‹ค ์ž‘์€ ๊ฒฝ์šฐ๋Š” ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋„ ์ข‹์Šต๋‹ˆ๋‹ค.

 

 

๋‚˜์˜ ํ’€์ด

 

#include <iostream>
#include <set>
using namespace std;

int main() {
    int n; int k; int a;
    set<int> s;
    cin >> n >> k;
    for(int i=0; i<n; ++i){
        cin >> a;
        s.insert(a);
    }
    for(int i=0; i<k; ++i){
        cout << *s.rbegin() << " ";
        s.erase(*s.rbegin());
    }
    return 0;
}

 

๋งˆ์ง€๋ง‰ ์›์†Œ ์ถœ๋ ฅ ํ›„, ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์„ ๋ฐ˜๋ณตํ•˜๋Š” ์‹์œผ๋กœ ํ’€์–ด์„œ ํ•ด๊ฒฐํ–ˆ๋Š”๋ฐ

ํ•ด์„ค์—๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์„ค๋ช…์ด ๋˜์–ด์žˆ์—ˆ์Œ.

๋Œ€์ถฉ ์ž…๋ ฅ๊ฐ’์— -1์„ ๊ณฑํ•ด์„œ set์— ์ง‘์–ด๋„ฃ๊ณ ,,, (๋‚ด๋ฆผ์ฐจ์ˆœ์„ ์œ„ํ•ด์„œ)

์•„๋ž˜ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์•ž์—์„œ๋ถ€ํ„ฐ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ถœ๋ ฅํ•จ.

for(set<int>::iterator it = s.begin(); cnt < k; it++)

 

์ด๋Ÿฐ ๋ฐฉ๋ฒ•๋„ ์žˆ๊ตฌ๋งŒ~~~

 

๊ทผ๋ฐ ์•„์ง์€ iterator ์‚ฌ์šฉ์— ์ต์ˆ™ํ•˜์ง€ ์•Š์•„์„œ ,,, ๊ณต๋ถ€ ๋” ํ•ด์•ผ๊ฒ ๋‹ค.

์ฝ”๋“œํŠธ๋ฆฌ๋Š” UI๊ฐ€ ์‹ ์ƒ ์‚ฌ์ดํŠธ ๊ฐ™์•„์„œ ๋ณ„ ๊ธฐ๋Œ€๋ฅผ ํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ ์˜ˆ์ƒ์™ธ๋กœ ๋ฌธ์ œ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ์ข‹์€๋“ฏ!!

 

 

๋ฌธ์ œ ์ถœ์ฒ˜ ์ฝ”๋“œํŠธ๋ฆฌ
728x90
๋ฐ˜์‘ํ˜•