๋ฌธ์ : 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๊ฐ ์ ์ ์ฌ์ดํธ ๊ฐ์์ ๋ณ ๊ธฐ๋๋ฅผ ํ์ง ์์๋๋ฐ ์์์ธ๋ก ๋ฌธ์ ํ๋ฆฌํฐ๊ฐ ์ข์๋ฏ!!
๋ฌธ์ ์ถ์ฒ ์ฝ๋ํธ๋ฆฌ
'๐ ์๊ณ ๋ฆฌ์ฆ > Code Tree' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฝ๋ํธ๋ฆฌ] Backtracking - ๋ฐฑํธ๋ํน / ์ฌ๊ท ์ฐ์ต๋ฌธ์ (0) | 2023.02.21 |
---|---|
[์ฝ๋ํธ๋ฆฌ] DFS / BFS (0) | 2023.02.21 |
[์ฝ๋ํธ๋ฆฌ] Tree Set (0) | 2023.02.09 |
[์ฝ๋ํธ๋ฆฌ] Hash Set ์ฐ์ต๋ฌธ์ (0) | 2023.02.09 |
[์ฝ๋ํธ๋ฆฌ] Hash Set (0) | 2023.02.09 |