WindowsWindows๋ผ๋ ์ ํ๋ช ๊ณผ ๊ฐ์ด Windows์ฉ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ๋ก๊ทธ๋๋ฐํ ๋ ์ฃผ๋ ์ฃผ์ ํ๋๋ '์ฐฝ(Window)'์ ๋ง๋ค๊ณ ๊ด๋ฆฌํ๋ ๊ฒ์ด๋ค. windows ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ๋ฌ ๊ตฌ์ฑ์์, [์ฃผ ์ฐฝ, ๋๊ตฌ ๋ชจ์, ๋ฉ๋ด, ์คํฌ๋กค๋ฐ, ๋ฒํผ, ๊ธฐํ ๋ํ์์ ์ปจํธ๋กค]์ ๋ชจ๋ ์ฐฝ์ด๋ค. ๋ฐ๋ผ์ windows ์์ฉ ํ๋ก๊ทธ๋จ์ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ์ฐฝ์ผ๋ก ๊ตฌ์ฑ๋๋ค. 1. ์์ Windows์์๋ ์ฌ๋ฌ ๊ฐ์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๋์์ ์คํ๋ ์ ์๋ค. ๋ฐ๋ผ์ CPU๋ ๋ฉ๋ชจ๋ฆฌ, ๋ชจ๋ํฐ ํ๋ฉด ๊ฐ์ ํ๋์จ์ด ์์๋ค์ ์ฌ๋ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๊ณต์ ํด์ผ ํ๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ์ฌ๋ฌ ์์ฉ ํ๋ก๊ทธ๋จ์ด ์์(Resource)์ ๋ฌด์ง์ํ๊ฒ ์ ๊ทผํ๊ฒ ๋๋ค. ์ด๋ฅผ ๋ง๊ธฐ ์ํด windows๋ ์์ฉ ํ๋ก๊ทธ๋จ์ด ํ๋์จ์ด์ ์ง์ ์ ๊ทผ์ ๋ชป..
"๋ฒจ๋ง ํฌ๋(bellman-ford) ์๊ณ ๋ฆฌ์ฆ " ์๊ณ ๋ฆฌ์ฆ ์ด๋ฆ์ด ๋ง์ ์๋ ๋ค. =3= ์๊ณ ๋ฆฌ์ฆ์ด๋ ์ํ์ ๋ฒ์น์ ๋ณด๋ฉด ๋ฐ๊ฒฌํ ์ฌ๋๋ค์ ์ด๋ฆ์ผ๋ก ์ด๋ฆ์ ๋ง๋ ๋ค. ์ง๊ด์ ์ด์ง ์์์ ๊ณ์ ๊น๋จน๊ฒ ๋๋ค. ์ง๊ด์ ์ผ๋ก ์ด๋ฆ์ ์ง์ด์คฌ์ผ๋ฉด ์ข๊ฒ ๋ค. ์๋ฅผ ๋ค์ด, "์์์ฌ์ดํด ๋ค์ต์คํธ๋ผ" ์ด๋ฐ์์ผ๋ก ~ 1. ์ต๋จ ๊ฒฝ๋ก ํธ๋ฆฌ (shortest-path tree), ์ต์ ํด ๊ตฌ์กฐ(optimal substructure ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ต์ ์ฌ๋ฌ๊ฐ๊ฐ ์กด์ฌ ํ ์ ์์ผ๋ฉด ๊ฐ์ค์น๊ฐ ์๋ ๊ทธ๋ํ๋ก ์ต๋จ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋๋ค. 2. ์์ ์ฌ์ดํด์ ์ ๋ฌด๋ฅผ ํ์ธํ ์ ์๋ค. ๋ค์ต์คํธ๋ผ๋ ๋ค๋ฅธ ์ !!์ผ๋ก ์์ ์ฌ์ดํด์ ๋ฐ์์ผ๋ก ์ต๋จ ๊ฒฝ๋ก๊ฐ ๋ฌดํ์ผ๋ก ๋น ์ง๋ ์์์ฐจ์ดํด์ ์ฐพ๋๋ค. 3. ๋ชจ๋ ์์ ๊ฐ์ ์ด ๋ฌธ์ ๋ค ? ์๋๋ค. (-) ๋ง์ด๋์ค ๊ฐ์ด ์๋..
" Algorithm/ KMP ์๊ณ ๋ฆฌ์ฆ " ๐ธ KMP( Knuth, Morris, Prett ) Algorithm? ๋ํ์ ์ธ ์์์๊ฐ ๋ด์ ํ ์ ์๋ ๋ฌธ์์ด ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ช ์นญ์ ์๊ณ ๋ฆฌ์ฆ ์ฐ์์์ ์๊ด์์ด ๋ง๋ ์ฌ๋์ด๋ฆ์ด๋ค. ๋ฌธ์์ด ๋งค์นญ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ๋ถ๋ฅด๋๊ฒ(?) ๋ ์ข์๊ฑฐ ๊ฐ๋ค. ๐ธ ํด๋ตhttps://www.acmicpc.net/problem/1786"baekjoon 1786๋ฒ - ์ฐพ๊ธฐ"์ ํจ๊ป kmp ์๊ณ ๋ฆฌ์ฆ์ ๋ฐฐ์ฐ๊ณ ํ์ด๋ณด์. P: ํจํด(๊ธธ์ด: m) T: ํ ์คํธ(๊ธธ์ด: n) ๋ง์ฝ ๋ชจ๋ ๋งค์นญ์ ํ๋ํ๋ ํ์ธํ๋ค๋ฉด? (n - m + 1) x m = ์๊ฐ ๋ณต์ก๋ O(nm)๋ชฉํ: ์๊ฐ ๋ชฉ์ก๋ O(n) ๋ง๋ค๊ธฐ. ๐ฅ step 1. ์ฐพ์ผ๋ ค๋ ๋ฌธ์์ด ์ ์ฒ๋ฆฌ ๊ณผ์ ๊ฑฐ์น๊ธฐ ์ ๋์ฌ(์ด์ ์ : ๆฅ..
' binary search & lower bound & upper bound ' ์ฝ๋ฉ ํ ์คํธ๋ฅผ ํ๋ค๋ณด๋ฉด ์ด๋ถ ํ์์ ์์ฃผํ๊ฒ ๋๋ค. ๋๋ถ๋ถ ๋ด์ฅํจ์๋ก ์ฌ์ฉํ๋ฉด ๋์ง๋ง, ๋ฌธ์ ์ข ๋ฅ์ ๋ฐ๋ผ์ ์ง์ ๊ตฌํํด ์กฐ๊ฑด์ ๋ํด์ผ ํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. c++ ๊ธฐ์ค์ผ๋ก ์ด์ง ํ์ ํจ์๋ ์ด 3๊ฐ์ง๊ฐ ์๋ค. ์ด ์ธ๊ฐ์ง ๋ชจ๋ ์ด์ง ํ์์ด ๊ธฐ๋ฐ์ธ ์๊ณ ๋ฆฌ์ฆ์ด๋ฏ๋ก ๋ฐ์ดํฐ๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ์ด ๋์ด ์์ด์ผ ํ๋ค. 1. [ #include ] std::binary_searchval๊ฐ์ด ์๋์ง ์๋์ง ํ์ธํ๋ ์๊ณ ๋ฆฌ์ฆ [ return bool ] std::lower_bound๋ฅผ ์ด์ฉํ์ฌ ๊ตฌํํ ์๊ณ ๋ฆฌ์ฆ. 2. [ #include ] std::lower_bound val๊ฐ์ ์์ ์์น๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ 3. [ #include..
" ํจ์ ๋ค const " class Test { public: void ResizeVector(int num) const { vec.resize(num); } private: vector vec;} ์์ ์๋ ํจ์๋ ์ปดํ์ผ์ด ๋ ๊น? ์ ๋ต์ ์๋๋ค. ์ด์ ๋ ํจ์ ๋ค const ๋๋ฌธ์ vector ๋ด์ฅํจ์์ธ resize๋ฅผ ์ฌ์ฉํ ์ ์๋ค.ํจ์ const์ ๋ํด์ ๊ฐ๋จํ๊ฒ ์์๋ณด์. [ ์๋ฏธ ] - ํด๋น ํจ์์์๋ ํด๋น ๊ฐ์ฒด์ ๋ฉค๋ฒ๋ณ์๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. - ์ฌ๊ธฐ์ ์ด๋ฒ์ ์๋ก ์๊ฒ ๋ ์ฌ์ค์ ๋ฉค๋ฒ๋ณ์์ ์์ฐจ ์ปจํ ์ด๋ vector๊ฐ ์์๋๋ฐ vector ๋ด์ฅ ํจ์๋ ์ ํ ๋ฐ๋๋ค๋ ๊ฒ์ด๋ค.์ด์ฐ๋ณด๋ฉด ๋น์ฐํ๊ฑฐ์ง๋ง ...? ์ปดํ์ผ ์ ์ ์ค๋ฅ๋ฉ์์ง๋ฅผ ๋ฑ๋๊ฒ ์ ๊ธฐํ๋ค...
"[windbg] windbg ์ฌ์ฉํ๊ธฐ, ๋คํ ๋ถ์ํ๊ธฐ" 1. ๋คํ๋ฅผ ์ฝ์ ์ฌ๋ณผ๊ณผ ์ฌ๋ณผ์ ๋ง๋ ์์ค์ฝ๋ ๊ฒฝ๋ก๋ฅผ ์ฐ๊ฒฐ์ํจ๋ค. 2. ๋คํ๋ฅผ windbg์ ๋๋๊ทธ ๋๋กญ ๋๋ open์ผ๋ก ํ์ผ์ ์ด๋ฉด ์ด๋ฐ ํ๋ฉด์ ๋ณผ์ ์๋ค.Loading Dump File : ๋คํ ํ์ผ์ ์์น, ๋คํ ์ข ๋ฅ Executable search path is : ๋คํ๊ฐ ๋ฐ์ํ OS Debug sesstion time : ๋คํ ๋ฐ์ ์์ ์๊ฐ Process Uptime: ๋ถํ ์ดํ ๋์ํ ์๊ฐ 3. !analyze -v ๋ช ๋ น์ด ์คํ !analyze-v ๋ช ๋ น์ด๋ฅผ ์คํํ๋ฉด ๋์ฑ ์์ธํ๊ฒ ๋คํ ๋ด์ฉ์ด ๋์จ๋ค.FAULTING_IP: ์ด๋ค ๋ถ๋ถ์์ ๋ฌธ์ ๊ฐ ์ผ์ด๋ฌ๋์ง ํ์ํ๋ค. callstack์ ๋ง์ง๋ง ๋ถ๋ถ์ด๋ค. KERNRLBASE.ddl..
"[ assembly ๋ช ๋ น์ด ] mov, lea" mov ( move ) - ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๋ ๋ช ๋ น์ด (*์ด๋์ด ์๋ ์ฃผ์) [์์]1. mov eax, dword ptr [ a ] : a์ ์ฃผ์๊ฐ ๊ฐ๋ฆฌํค๋ 4๋ฐ์ดํธ(Dword) ๊ฐ์ด eax์ ์ ์ฅํ๋ค. 2. mov eax, [adr] : adr์ฃผ์๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ eax์ ์ ์ฅํ๋ค.3. mov dword ptr [ a ], 3 : a์ 3 ๊ฐ์ ์ ์ฅํ๋ค.4. mov eax, [ rbx + 8 ] : rbx์ฃผ์๊ฐ์ + 8์ ํ ์ฃผ์๋ก ๊ฐ์ ๊ทธ ์์ ์๋ ๊ฐ์ eax์ ๋ณต์ฌํ๋ค. 5. mov [rcx], rax : rcx๋ ์ง์คํฐ๊ฐ ์ฐธ์กฐํ๋ ์ฃผ์์ ๋ฉ๋ชจ๋ฆฌ์ rax ๋ ์ง์คํฐ์ ๊ฐ์ ์ ์ฅํ๋ค. Lea ( Load Effective Address )- ์ ํจ..
"c++20 STL::Container #2" 1. contains๊ธฐ์กด map, set ๋ฐ์ดํฐ findํจ์ ์ฌ์ฉ ์ ๋ฐ๋ณต์์ end๋ฐ๋ณต์๊ฐ ๊ฐ์ง ์์ ์ง ๋น๊ตํ๋ ๋ฐฉ์์ด์๋ค. std::set s {1, 2, 3, 4, 5}; auto findset = s.find(2);if (findset != s.end()){ cout m {{1, 1000}, { 2, 2000 }}; auto findmap = m.find(2); if(findmap != m.end()){ cout second c++20์์ ์๋ก ์ถ๊ฐ ๋ contains๋ associate container์ ๋ด์ฅํจ์๋ก ์ฐพ์ผ๋ ค๋ ํค๊ฐ์ ๋ฃ์ผ๋ฉด true, false๋ก ๊ทธ key์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ์ ์ ์๋ค. if (findset.contains(2)..
"c++20 STL::Container #1" 1. std::to_array std::array ๋ง๋๋ ๋ฐฉ๋ฒ์ด ์ถ๊ฐ๋์๋ค. //์์์ ํ์ ์ถ๋ก auto ToArray = std::to_array("Hello World");//๋ช ์์ ํ์ ์ถ๋ก auto ToArray = std::to_array({ 1,2,3,4,5,6 }); 2. std::erase, erase_if ๊ธฐ์กด์ vector ๋ฐ์ดํฐ ์ค ํน์ ํ ์กฐ๊ฑด์ ๋ถํฉํ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ ค๊ณ ํ ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ๊ณผ ๋ฌธ์ ์ ์ ์์๋ณด์.// 1๋ฒ ====================================================================vector vec {-1, 2, 3, 4, -5, 7, -2, 3 }; for (auto i..
"(c++20) Conditional Explicit Constructor" 1. explicit // c++11 struct NoExplicit{ NoExplicit() = default; NoExplicit(int n) { cout TestNoExplicit(10); // - ???? error X TestNoExplicit() NoExplicit struct ์๋ฃํ์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๊ณ ์๋ค. ๊ทธ๋ผ ๋งค๊ฐ๋ณ์์ NoExplicit struct ์ด ์ธ์ ๋ค๋ฅธ ์๋ฃํ์ด ๋ค์ด๊ฐ๋ค๋ฉด ์๋ฌ๋ฅผ ๋ฑ์ด๋ด๋๊ฒ ์ ์์ด๋ค. ํ์ง๋ง ์ ์ฝ๋์์ TestNoExplicit(10) ์๋ฌ๋ฅผ ๋ฑ์ด ๋ผ๊ฑฐ ๊ฐ์ง๋ง ์ ์ ์๋ํ๋ค. ์ด๋ ์ปดํ์ผ๋ฌ์์ "10"์ NoExplicit(int n)" ์์ฑ์๋ฅผ ์ด์ฉํ์ฌ ์์์ ํ๋ณํ์ ..