SW์ค์ฌ๋ํ ์ฌ์ ๋จ์์ CodeTree์ ํจ๊ป ์ค์ํ ์ฝ๋ฉํ ์คํธ ๋๋น ์บ ํ์ ์ฐธ์ฌํ์ฌ ๊ณต๋ถํ ๋ด์ฉ์ ์ ๋ฆฌํ์์ต๋๋ค.
* ์ฐธ๊ณ : python๊ณผ c++, java ๋ฑ ์ธ์ด๋ณ๋ก ์ค๋ช ์ด ๋ค๋ฅธ ๋ถ๋ถ ์กด์ฌ! ํ์๋ c++ ์ฌ์ฉ.
set STL
C++์์๋ set์ด๋ผ๋ STL์ ์ด์ฉํ ์ ์์ต๋๋ค.
set์ TreeSet ์๋ฃ๊ตฌ์กฐ๋ก ๋์ด์์ผ๋ฉฐ, ์ด TreeSet์ด ๋ฐ๋ก ๊ท ํ ์กํ ์ด์งํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ฐ์ดํฐ๋ค์ ๊ด๋ฆฌํด์ฃผ๋ ์๋ฃ๊ตฌ์กฐ ์ ๋๋ค.
๋ชจ๋ ํจ์์ ์๊ฐ๋ณต์ก๋๋ ์ ๋๋ค.
set์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ #include <set> ํค๋์, set<T> name; ํํ์ ์ ์ธ์ด ํ์ํฉ๋๋ค.
T๋ ํ์ ์ผ๋ก, set ์์ ๋ค์ด๊ฐ ์์์ ํ์ ์ ์ ์ด์ค์ผ ํฉ๋๋ค.
#include <iostream>
#include <set>
using namespace std;
int main() {
set<int> s;
return 0;
}
set์ ์ด์ฉํ ๋ ์์ฃผ ์ฌ์ฉ๋๋ ๊ฒ์ ๋ค์ 7๊ฐ์ง ์ ๋๋ค. set<int> s;๋ก ์ ์ธ๋์ด ์ฌ์ฉ๋ ๋๋ฅผ ์๋ก ์ค๋ช ํด๋ณด๊ฒ ์ต๋๋ค.
- s.insert(E)
treeset์ ๋ฐ์ดํฐ E๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- s.erase(E)
ํ์ฌ treeset์ ๋ค์ด์๋ ๋ฐ์ดํฐ ์ค ์ซ์ E๋ฅผ ์ฐพ์ ์ ๊ฑฐํฉ๋๋ค.
- s.find(E)
ํ์ฌ treeset์ ์ซ์ E๊ฐ ๋ค์ด ์๋์ง๋ฅผ ์ฐพ์ต๋๋ค. ์๋ค๋ฉด ํด๋น iterator๋ฅผ ๋ฐํํ๋ฉฐ, ์๋ค๋ฉด s.end()๊ฐ์ ๋ฐํํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ์ด ์๋ค๋ฉด s.find(E) != s.end(), ์๋ค๋ฉด s.find(E) == s.end()๋ฅผ ๋ง์กฑํ ๊ฒ์ ๋๋ค.
- s.lower_bound(E)
E๋ณด๋ค ๊ฐ๊ฑฐ๋ ํฐ ์ต์ด์ ์ซ์๊ฐ ์ ํ์๋ iterator ๊ฐ์ ๋ฐํํฉ๋๋ค. ๋ง์ฝ ์๋ค๋ฉด s.end()๊ฐ์ ๋ฐํํฉ๋๋ค.
๋ฐ๋ผ์ ๊ฐ์ ์ฐพ๊ธฐ ์ํด์๋ ์์ *์ ๋ถ์ธ *s.lower_bound(E)๋ฅผ ์ด์ฉํด์ผ ํฉ๋๋ค.
- s.upper_bound(E)
E๋ณด๋ค ํฐ ์ต์ด์ ์ซ์๊ฐ ์ ํ์๋ iterator ๊ฐ์ ๋ฐํํฉ๋๋ค. ๋ง์ฝ ์๋ค๋ฉด s.end()๊ฐ์ ๋ฐํํฉ๋๋ค.
๋ฐ๋ผ์ ๊ฐ์ ์ฐพ๊ธฐ ์ํด์๋ ์์ *์ ๋ถ์ธ *s.upper_bound(E)๋ฅผ ์ด์ฉํด์ผ ํฉ๋๋ค.
- *s.begin()
๊ธฐ๋ณธ์ ์ผ๋ก treeset์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํด์ค๋๋ค. ๋ฐ๋ผ์ treeset์ ์์ ์์น์ธ s.begin()์ ๋ค์ด์๋ ๊ฐ์ treeset์ ์ ํ์๋ ๊ฐ๋ค ์ค ๊ฐ์ฅ ์์ ๊ฐ์ด ๋ฉ๋๋ค. ์ฆ, ๊ฐ์ฅ ์์ ์ซ์๋ *s.begin()์ผ๋ก ์กฐํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- *s.rbegin()
๊ธฐ๋ณธ์ ์ผ๋ก treeset์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ด๋ฏ๋ก, treeset์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ๊ฐ์ฅ ๋ง์ง๋ง ์์น์ ๋ค์ด ์์ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์ s.end()๋ treeset์ ๊ฐ์ฅ ๋ง์ง๋ง ์์์ ์์น๊ฐ ์๋๋ผ, ๋ง์ง๋ง ์์ ๊ทธ ๋ค์์ ๋ํ๋ด๋ ๋น์ด์๋ ๋ ์์น๋ฅผ ๋ปํฉ๋๋ค.
๊ฐ์ฅ ๋ง์ง๋ง ์์์ ์์น(๊ฐ์ฅ ํฐ ๊ฐ)๋ ์ค์ ๋ก s.rbegin()์ด๋ฉฐ, ์ต๋๊ฐ์ ์ป๊ธฐ ์ํด์๋ *s.rbegin()์ ์ฐธ์กฐํด์ผ ํฉ๋๋ค.
์ด๋, set์ ์๋ฌด ์์๊ฐ ์๋์ง์ ๋ํด์๋ s.rbegin() != s.rend()์์ผ๋ก ๋น๊ต๋ฅผ ์งํํด์ผ ํจ์ ์ ์ํฉ๋๋ค.
์ถ์ฒ ์ฝ๋ํธ๋ฆฌ
'๐ ์๊ณ ๋ฆฌ์ฆ > Code Tree' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฝ๋ํธ๋ฆฌ] DFS / BFS (0) | 2023.02.21 |
---|---|
[์ฝ๋ํธ๋ฆฌ] TreeSet ์ฐ์ต๋ฌธ์ (0) | 2023.02.09 |
[์ฝ๋ํธ๋ฆฌ] Hash Set ์ฐ์ต๋ฌธ์ (0) | 2023.02.09 |
[์ฝ๋ํธ๋ฆฌ] Hash Set (0) | 2023.02.09 |
[์ฝ๋ํธ๋ฆฌ] TreeMap ์ฐ์ต๋ฌธ์ (0) | 2023.02.09 |