Algorithm ๐ง๐ป๐ป/Note12 [C++, ํ ํ๋ฆฟ] ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ์ ๋ฌํฝ์ด ๋ฐฐ์ด 1. ๋ฐฐ์ด ์ํ ๋ฐ์ 1 6 2 9 8 4 → 4 2 9 3 1 8 7 2 6 9 8 2 → 9 2 3 6 1 5 1 8 3 4 2 9 → 7 4 6 2 3 1 7 4 6 2 3 1 → 1 8 3 4 2 9 9 2 3 6 1 5 → 7 2 6 9 8 2 4 2 9 3 1 8 → 1 6 2 9 8 4 void cmd1(){ // ๋ฐฐ์ด ์ํ ๋ฐ์ int temp[101][101] = {0, }; for(int i=0; i 2022. 9. 22. ๋นํธ๋ง์คํฌ(BitMask) ๋นํธ๋ง์คํฌ(BitMask) ๋นํธ๋ ์ปดํจํฐ์์ ๋ค๋ฃจ๋ ์ต์ ๋จ์์ด๋ฉฐ, ์ ์๋ฅผ ์ด์ง์(0, 1)๋ก ํํํฉ๋๋ค. ์ด๋ฌํ ๋นํธ์ ํน์ฑ์ ์ด์ฉํ ์ฐ์ฐ์ ํตํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๊ธฐ๋ฒ์ ๋นํธ๋ง์คํฌ(BitMask)๋ผ๊ณ ํฉ๋๋ค. ์ด์ง์๋ 0 ๋๋ 1์ ์ด์ฉํ๋ฏ๋ก ํ๋์ ๋นํธ(bit)๊ฐ ํํํ ์ ์๋ ๊ฒฝ์ฐ๋ ๋ ๊ฐ์ง์ ๋๋ค. ๋ณดํต ์ด๋ค ๋นํธ๊ฐ 1์ด๋ฉด ์ ๊ตฌ๊ฐ "์ผ์ ธ ์๋ค", 0์ด๋ฉด "๊บผ์ ธ ์๋ค"๋ผ๊ณ ๋งํ๋ฉฐ, ์ ๊ตฌ๋ฟ๋ง ์๋๋ผ ์๋์ฒ๋ผ ๋ ๊ฐ์ง ๊ฒฝ์ฐ๋ก ํํํ ์ ์๋ ์์๋ ๋ชจ๋ ๊ฐ๋ฅํฉ๋๋ค. ์์์ ์์ผ๋ฉด 1, ์์์ผ๋ฉด 0 ๋จ์๋ฉด 1, ์ฌ์๋ฉด 0 ์ ๋ต์ด๋ฉด 1, ์ค๋ต์ด๋ฉด 0 ์ฌ์ฉ ์ด์ ๋นํธ๋ง์คํฌ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํฐ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ํ ์๊ฐ์ด ๋น ๋ฅด๋ค. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ ๋ค. ๋นํธ๋ง์คํฌ ์ฐ์ฐ์ bit ์ฐ์ฐ์ด๊ธฐ.. 2022. 9. 16. [C++, ํ ํ๋ฆฟ] ์ ๋์จ ํ์ธ๋ ์ ๋์จ ํ์ธ๋ #include #define MAX 100001 using namespace std; int N, M, ans; int parent[MAX]; int find_parent(int a){ if(a == parent[a]) return a; return parent[a] = find_parent(parent[a]); } void make_parent(int a, int b){ a = find_parent(a); b = find_parent(b); if(a 2022. 9. 2. [C++, ํ ํ๋ฆฟ] map find index Get index of element in C++ map Get index of element in C++ map I have a std::map called myMap in my C++ application, and I want to get an element using either myMap.find(key) or myMap[key]. However, I would also like to get the index of that element in the map... stackoverflow.com int k = distance(mymap.begin(), mymap.find(mykey)); 2022. 8. 23. [C++, ํ ํ๋ฆฟ] ๋ค์ต์คํธ๋ผ ๋ค์ต์คํธ๋ผ #include #include #include #define INF 1E9 using namespace std; // ๋ ธ๋์ ๊ฐ์(V), ๊ฐ์ ์ ๊ฐ์(E), ์์ ๋ ธ๋ ๋ฒํธ(K) // ๋ ธ๋์ ๊ฐ์๋ ์ต๋ 20000๊ฐ๋ผ๊ณ ๊ฐ์ int V, E, K; // ๊ฐ ๋ ธ๋์ ์ฐ๊ฒฐ๋์ด ์๋ ๋ ธ๋์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๋ ๋ฐฐ์ด vectorgraph[20001]; // ์ต๋จ ๊ฑฐ๋ฆฌ ํ ์ด๋ธ ๋ง๋ค๊ธฐ int d[20001]; void dijkstra(int start){ priority_queuepq; // ์์ ๋ ธ๋๋ก ๊ฐ๊ธฐ ์ํ ์ต๋จ ๊ฒฝ๋ก๋ 0์ผ๋ก ์ค์ ํ์ฌ, ํ์ ์ฝ์ pq.push({0, start}); d[start] = 0; while(!pq.empty()){ int dist = pq.top().first; //.. 2022. 5. 28. [C++, ํ ํ๋ฆฟ] ํ๋ก์ด๋-์์ฌ ํ๋ก์ด๋-์์ฌ #include #define INF 1e9 // ๋ฌดํ์ ์๋ฏธํ๋ ๊ฐ์ผ๋ก 10์ต์ ์ค์ using namespace std; // ๋ ธ๋์ ๊ฐ์(N), ๊ฐ์ ์ ๊ฐ์(M) // ๋ ธ๋์ ๊ฐ์๋ ์ต๋ 500๊ฐ๋ผ๊ณ ๊ฐ์ int n, m; // 2์ฐจ์ ๋ฐฐ์ด(๊ทธ๋ํ ํํ)๋ฅผ ๋ง๋ค๊ธฐ int graph[501][501]; int main(void) { cin >> n >> m; // ์ต๋จ ๊ฑฐ๋ฆฌ ํ ์ด๋ธ์ ๋ชจ๋ ๋ฌดํ์ผ๋ก ์ด๊ธฐํ for (int i = 0; i > b >> c; graph[a][b] = c; } // ์ ํ.. 2022. 5. 13. [C++, ์ ์ฉํ ๋ฌธ๋ฒ] upper_bound, lower_bound lower_bound ์ฉ๋ : ์ฐพ์ผ๋ ค๋ key ๊ฐ๋ณด๋ค ๊ฐ๊ฑฐ๋ ํฐ ์ซ์๊ฐ ๋ฐฐ์ด ๋ช ๋ฒ์งธ์์ ์ฒ์ ๋ฑ์ฅํ๋์ง ์ฐพ๊ธฐ ์ํจ ์ฌ์ฉ ์กฐ๊ฑด : ํ์์ ์งํํ ๋ฐฐ์ด ํน์ ๋ฒกํฐ๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๋์ด ์์ด์ผ ํจ lower_bound์ ๋ฐํํ์ Iterator ์ด๋ฏ๋ก ์ค์ ๋ก ๋ช ๋ฒ์งธ ์ธ๋ฑ์ค์ธ์ง ์๊ณ ์ถ๋ค๋ฉด, lower_bound ๊ฐ์์ ๋ฐฐ์ด ์ฒซ ๋ฒ์งธ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฐฐ์ด์ ์ด๋ฆ์ ๋นผ ์ค์ผํจ. 1. array #include #include using namespace std; int main() { int arr[6] = { 1,2,3,4,5,6 }; cout 2022. 5. 11. [C++, ํ ํ๋ฆฟ] ์์ ๊ตฌํ๊ธฐ(์๋ผํ ์คํธ๋ค์ค์ ์ฒด) ์์ ๊ตฌํ๊ธฐ(์๋ผํ ์คํธ๋ค์ค์ ์ฒด) #include #include #include using namespace std; int main() { int N = 10000; // 0 ~10000๊น์ง์ ์์ ๊ตฌํ๊ธฐ vectorprime(N + 1, true); // ์ต์ข ์ ์ผ๋ก true์ผ ๊ฒฝ์ฐ ์์ prime[0] = prime[1] = false; for(int i=2; i 2022. 4. 11. [C++, ์ ์ฉํ ๋ฌธ๋ฒ] ๋ฌธ์์ด ๋์๋ฌธ์ ๋ณํ ๋ฌธ์์ด ๋์๋ฌธ์ ๋ณํ #include #include using namespace std; int main(){ string s = "ABCD"; string s2 = "abcd"; transform(s.begin(), s.end(), s.begin(), ::tolower); // ๋๋ฌธ์ -> ์๋ฌธ์ transform(s2.begin(), s2.end(), s2.begin(), ::toupper); // ์๋ฌธ์ -> ๋๋ฌธ์ } 2022. 4. 10. ์ด์ 1 2 ๋ค์