๋ชฉ๋กComputer Science/์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ (11)
์ฐ์ ๊ธฐ๋ก ๐ช

์ด ๊ธ์ ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ํ์ตํ๋ฉฐ ์ด๋ ๊ฒ ์ง๋ฉด ์ ์๋ ๊น?๋ฅผ ๊ณ ๋ฏผํ ๊ณผ์ ์ ์์ฑํ ๊ธ์ ๋๋ค. ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ ์์ฒด๊ฐ ์ฒ์์ด๋ผ๋ฉด ์๋ ๋งํฌ์์ ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ๊ฐ๋ ์ ์ตํ ํ ๊ธ์ ์ฝ์ผ์๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.https://blog.encrypted.gg/1035 [์ค์ ์๊ณ ๋ฆฌ์ฆ] 0x1C๊ฐ - ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ์๋ ํ์ธ์, ์ด๋ฒ์๋ ํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ์ด์ ์ต๋จ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ์ธ ํ๋ก์ด๋, ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ๋ง ๋ค๋ฃจ๊ณ ๋๋ฉด ๋๋ฆ ๊ธธ์๋ ๊ทธ๋ํ ํํธ๊ฐ ๋๋ฉ๋๋ค. ๋ชฉ์ฐจ๋ ๋์ผ๋ก ํ ๋ฒblog.encrypted.gg ์ต๋จ๊ฑฐ๋ฆฌํ๋ก์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ทธ๋ํ์ ๋ชจ๋ ์ ์ ๊ฐ์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋จํ ํธ์ด๋ค.NxNํฌ๊ธฐ์ ๋ฐฐ์ด์ ํฐ ๊ฐ(INF)์ผ๋ก ์ด๊ธฐํํ๋ค.๊ฐ ์ ์ ๊ฐ์ ..

๊ฐ์LCS(Longest Common Subsequence)๋ ์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด๋ก, ๋ ๋ฌธ์์ด ์ฌ์ด ๊ณตํต๋๋ ๋ถ๋ถ์ ๋งํ๋ค. ์ฆ ๋ฌธ์์ด์ ์๋์ ์ธ ์์๋ง ๊ฐ์ผ๋ฉด ๋๋ค.์๋ฅผ๋ค์ด ์๋์ ๊ฐ์ด 2๊ฐ์ ๋ฌธ์์ด์ด ์์ ๋LCS๋ ABCCE์ด๋ค. ์ด๋ฐ LCS๋ DP๋ฅผ ํ์ฉํด์ ๊ตฌํ๋ค.๊ณผ์ ๋จผ์ AABCCDE์ A์ ๊ณตํต๋ถ๋ถ์ ๊ตฌํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ํ์๋ ํ์ฌ๊น์ง ๊ฐ์ฅ ๊ธด ๊ณตํต๋ถ๋ถ์ ๊ธธ์ด๋ฅผ ์ ์ฅํ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฉด ํ๋ ์๋์ ๊ฐ์ด ๋๋ค. (A๋ ๊ธธ์ด๊ฐ 1์ด๋ ์ต๋ ๊ณตํต๋ถ๋ถ์ ๊ธธ์ด๋ 1์ด๋ค.)์ด์ AABCCDE์ AB์ ์ต์ฅ๊ณตํต๋ถ๋ถ์์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํด๋ณด๋๋ก ํ์. ๊ทธ๋ฌ๋ฉด ์๋์ ๊ฐ์ด ๋ ๊ฒ์ด๋ค.์ฌ๊ธฐ์ ์ฃผ๋ชฉํด์ผ ํ๋ ๋ถ๋ถ์ ๊ณตํต๋๋ ๋ถ๋ถ์ธ B๊ฐ ๋์์ ๋์ด๋ค. ์ ๊ณณ์ AAB์ AB์ LCS์ ๊ธธ์ด๋ฅผ ๊ธฐ๋กํ ๋ถ๋ถ์ธ๋ฐ AB..

dfs๋ฅผ ์์ฉํ์ฌ ๋ฌดํฅ๊ทธ๋ํ์์์ ์ฌ์ดํด์ ํ๋จํ ์ ์๋ ์ฝ๋์ด๋ค. ๊ฐ๋จํ๊ฒ ์ค๋ช ํ์๋ฉด ์ ์ ํ๋์ฉ ์ํํ๋ฉฐ ์ฌ์ดํด์ด ์กด์ฌํ๋์ง ํ๋ณํ๋ ์ฝ๋์ด๋ค. ์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ ๊ทธ๋ํ๊ฐ ์๋ค๊ณ ํ์. ๋์ผ๋ก ๋ด์๋ 2 3 5 ์ฌ์ดํด์ด ์กด์ฌํจ์ ์ ์ ์๋ค. ์๋ ์ฝ๋์์๋ 1์์๋ถํฐ dfs๋ฅผ ํ๋ฉฐ ๋ฐ๋ก ์ฌ์ดํด์ ์ฐพ๊ฒ ๋๋ค.dfs ๊ฐ์ฅ ์๋ path.pop_back()์ 4์ ๊ฐ์ด ์ฌ์ดํด์ ํฌํจ๋์ง ์๋ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ๋ ์ฝ๋์ด๋ค. ์ธ์ ํ ๋ ธ๋๊ฐ ์ ์ ๋ฐฉ๋ฌธํ ๋ ธ๋๋ฐ์ ์์ ๋์ ๊ฒฝ์ฐ์ด๋ค.#include #include #include using namespace std;vector> graph; // ๊ทธ๋ํ ์ธ์ ๋ฆฌ์คํธvector> edges; // ๊ฐ์ ์ ๋ณดvector visited;vector path;b..

ํต์ ๋ ฌ์ ์ซ์ ํ๋(pivot)๋ฅผ ๊ณจ๋ผ์ ์ฌ๋ฐ๋ฅธ ์๋ฆฌ์ ๋ฃ์ด๊ฐ๋ฉฐ ์ ๋ ฌ์ ์งํํ๋ค. ์ด๋ ๋ฐฐ์ด์ ์ชผ๊ฐ๊ฐ๋ฉฐ ์ฌ๊ท์ ์ผ๋ก ์ ๋ ฌ์ ํ๊ธฐ ๋๋ฌธ์ ์ต์ข ์ ์ธ ์๊ฐ ๋ณต์ก๋๋ O(nlogn)์ด๋ค. ๋์ ๊ณผ์ ์ด๋ก ์ ์ธ ๋ด์ฉ์ ๋ค์ด๊ฐ๊ธฐ ์์ ์ด๋ค์์ผ๋ก ๋์ํ๋์ง ํ์ธํด๋ณด๋๋ก ํ์. ์๋์ ๊ฐ์ด {5, 4, 1, 7, 6, 2} ๋ฐฐ์ด์ด ์๋ค๊ณ ํ์ ๋ ๋งจ ์ผ์ชฝ์ ํผ๋ด์ผ๋ก ์ก๊ณ left์ right๋ฅผ ์๋์ ๊ฐ์ด ๊ฐ๊ฐ ์ง์ ํ๋ค.์ฌ๊ธฐ์์ left๋ pivot๋ณด๋ค ์์์ผํ๊ณ , right๋ pivot๋ณด๋ค ์ปค์ผํ๋ค. ์ด์ left๋ฅผ ํ๋์ฉ ์ฎ๊ธฐ๋ฉฐ 5๋ณด๋ค ํฐ ์๊ฐ ์ฒ์์ผ๋ก ๋์ค๋ ์ง์ ์ ์ฐพ์ผ๋ฉด ์๋์ ๊ฐ์ ์ํ๊ฐ ๋๋ค.right๋ pivot๋ณด๋ค ์ปค์ผํ๋ค๊ณ ํ๋๋ฐ ์ด๋ฏธ pivot๋ณด๋ค ์๋ค. ๊ทธ๋ฌ๋ ์ฌ๊ธฐ์ ๋ฉ์ถฐ์ค๋ค.์ด์ left์ right๊ฐ..
1. ๋ฒกํฐ ๋ด์ ์กด์ฌํ๋์ง ์ฌ๋ถ ํ์ (binary_search) ์ด ๊ฒฝ์ฐ์๋ ์ด์งํ์์ ์ฌ์ฉํ๋๊ฒ์ด ๋น ๋ฅด๋ค. ๋จ ์ด์งํ์์ ์ฌ์ฉํ๋ ค๋ฉด ์ ๋ ฌ์ด ๋์ด์์ด์ผ ํ๋ค. ์ ์ ์๋์ด์๋ค. ์๋์ ๊ฐ์ด ์ฌ์ฉํ๋ค. binary_search(์์๋ฒ์, ๋๋ฒ์, ์ฐพ์ ๊ฐ); ์์ ์ฝ๋ #include #include #include using namespace std; int main() { int num; cin >> num; vector vec = { 1,3,5,7,9 }; //์กด์ฌ์ 1, ๊ทธ๋ ์ง ์์ผ๋ฉด 0 ๋ฆฌํด if (binary_search(vec.begin(), vec.end(), num)) { cout num; vector vec = { 1,3,5,7,9 }; int idx = find(vec.begin(),..

19-> 1+ 9 = 10 ์ด๋ฐ์์ผ๋ก ์๋ฆฟ์๋ฅผ ๊ตฌํด์ฃผ๋ ์ฝ๋์ด๋ค. #include using namespace std; int seperateAndPlus(int x) { int res = 0; while (x != 0) { res = res + x % 10; x /= 10; } return res; } int main() { int num; cin >> num; cout

๊ฐ๋ ๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ์ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ๋ ์ด์์ ๋ถ๋ถ๋ฌธ์ ๋ก ๋๋ ๋ค ๊ฐ ๋ฌธ์ ์ ๋ํ ๋ต์ ๊ณ์ฐํ๊ณ , ์ด๋ฅผ ๋ณํฉํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ข ๋ง๋ถ์ ํํ์ ๋น๋ฆฌ์๋ฉด ๊ฐ๊ฐ ๊ฒฉํ ๋ผ๊ณ ๊ฐ๋จํ ์ค๋ช ํ ์ ์๋ค. ๋ฐ๋ก ์์ ๋ฅผ ๋ณด๋๋ก ํ์. ์์ 1 : ์์ด์ ํฉ 1๋ถํฐ N๊น์ง์ ๊ฐ์ ๊ตฌํด์ผ ํ๋ค๊ณ ๊ฐ์ ํ์. ์ด๋ฅผ ๋จ์ ์ฌ๊ทํจ์๋ก ๊ตฌํํ๋ฉด ์๋์ ๊ฐ์ ๊ฒ์ด๋ค. #include using namespace std; int recursiveSum(int N) { if (N == 1) { return N; } else { return recursiveSum(N - 1) + N; } } int main() { int A; cin >> A; cout > A; cout

๊ฐ๋ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ ์ ๊ต์ฅํ ๋จ์ํ๋ค. ๋ง ๊ทธ๋๋ก ํ์์ ์ผ๋ก, ๋ ์์ ๊ฐ์ฅ ํฐ ์ด์ต์ ์ถ๊ตฌํ๋ ๊ธฐ๋ฒ์ด๋ค. ์ค์ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒ์ํ๋ฉด ์๋์ ๊ฐ์ด ๋์จ๋ค. ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ํด๋ฅผ ๊ตฌํ๋ ๋ฐ์ ์ฌ์ฉ๋๋ ๊ทผ์ฌ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก, ์ฌ๋ฌ ๊ฒฝ์ฐ ์ค ํ๋๋ฅผ ๊ฒฐ์ ํด์ผ ํ ๋๋ง๋ค ๊ทธ ์๊ฐ์ ์ต์ ์ด๋ผ๊ณ ์๊ฐ๋๋ ๊ฒ์ ์ ํํด ๋๊ฐ๋ ๋ฐฉ์์ผ๋ก ์งํํ์ฌ ์ต์ข ์ ์ธ ํด๋ต์ ๋๋ฌํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๊ฐํ์ ๋ ๋์์ ์ด์ต๋ง์ ์ซ๋ ๊ฒ์ด ์ต์ ์ ์ ํ์ด๋ผ๊ณ ๋ ํ ์ ์๋ค. ๊ฐ๋ น ์๋์ ๊ฐ์ ์ํฉ์ด ์๋ค๊ณ ์๊ฐํด๋ณด์. ์์ 1 ๊ฐ ๊ทธ๋ฆผ์ ์ ํ ์ซ์๋ ๋ฌธ์ ๋ฅผ ํธ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด๊ณ ์ฐ๋ฆฌ๋ ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์์ level1, level2, level3๋ฌธ์ ๋ฅผ ํ๋์ฉ ํด๊ฒฐํ๋ ค ํ๋ค. ์ด๋ ๋ฌธ์ ๋ฅผ ํธ๋ ์๊ฐ์ ์ต์ํ ํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ..

๊ฐ๋ ๋์ ๊ณํ๋ฒ์ ์ ์๋ ์๋์ ๊ฐ๋ค. ์ฒ์ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ๋ ์์ ๋ฌธ์ ๋ค๋ก ๋๋ ๋ค ๊ฐ ์กฐ๊ฐ์ ๋ต์ ๊ณ์ฐํ๊ณ , ์ด ๋ต๋ค๋ก๋ถํฐ ์๋ ๋ฌธ์ ์ ๋ํ ๋ต์ ๊ณ์ฐํ๋ ๋ฐฉ์. ์ ์๋ง ๊ฐ์ง๊ณ ๋ ์ดํดํ๊ธฐ ์ฝ์ง ์๋ค. ๋ค์์ ์ค๋ช ํ๊ฒ ์ง๋ง, ๊ฒฐ๋ก ์ ์ผ๋ก ๋งํ์๋ฉด ๋ฐฐ์ด์ ๋ง๋ค์ด ๊ฐ๋ค์ ์ ์ฅํ๊ณ , ํ์ ๊ทธ๊ฒ๋ค์ ๊ฐ์ง๊ณ ๋ต์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋์ ๊ณํ๋ฒ์ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํ๋ ค๊ณ ํ๋ค๋ฉด ๋จผ์ ์ ํ์์ ์ธ์์ผ ํ๋ค. ์ ํ์์ด๋ผ๋ ๊ฒ์ ์ด๋ค ์์ด์ ์ผ๋ฐํญ์ ์ด์ ์ ํญ๋ค์ ์ด์ฉํด ์ ์ํ ์์ด๋ค. ๊ณ ๋ฑํ๊ต ๋ ๋ฐฐ์ ๋ ์์ด์ ์ผ๋ฐํญ์ ๊ตฌํ๋ฏ์ด n๋ฒ์งธ ํญ์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ์์ผ๋ก ๋ํ๋ธ๋ค๊ณ ์๊ฐํ๋ฉด ์ฝ๋ค. ์๋ฅผ ๋ค์ด ํํ๋ค ์๋ ํผ๋ณด๋์น ์์ด์ ์ ํ์์ ์๋์ ๊ฐ๋ค. ์ด์ ์ด ์์ ๊ฐ์ง๊ณ ์ฝ๋๋ก ์์ฑ์ ํด ๋ณด๋๋ก ํ์. ์ผ๋ฐ์ ์ผ๋ก ์ฌ๊ทํจ์๋ฅผ..

๊ตฌํ ๋ด์ฉ at(๐) : ๋ฐฐ์ด Arr์ ์ธ๋ฑ์ค i์ ์ ์ฅ๋ ๊ฐ์ ์ถ๋ ฅํ๋ค.(๋จ, 0 ≤ ๐ ≤ ๐ − 1) add(๐, ๐๐๐๐๐) : ๋ฐฐ์ด ๐ด๐๐์ ์ธ๋ฑ์ค ๐์์ ๐ − 2์ ๊ฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ์ฉ ์ด๋ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐฐ์ด ๐ด๐๐์ ์ธ๋ฑ์ค ๐๋ฒ์งธ์ ๐ฃ๐๐๐ข๐๋ฅผ ์ฝ์ ํ๋ค. (๋จ, 0 ≤ ๐ ≤ ๐ − 1) remove(๐): ๋ฐฐ์ด ๐ด๐๐์ ์ธ๋ฑ์ค ๐ + 1์์ ๐ − 1๊น์ง์ ๊ฐ์, ์ผ์ชฝ์ผ๋ก ํ ์นธ์ฉ ์ด๋์ํจ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐฐ์ด ๐ด๐๐์ ๐ − 1๋ฒ์งธ ์ธ๋ฑ์ค์ ๊ฐ์ 0์ผ๋ก ํ ๋นํ๋ค. (๋จ, 0 ≤ ๐ ≤ ๐ − 1) set(๐, ๐๐๐๐๐): ๋ฐฐ์ด ๐ด๐๐์ ์ธ๋ฑ์ค ๐๋ฒ์งธ์ ๐ฃ๐๐๐ข๐๋ฅผ ํ ๋นํ๊ณ ๐ฃ๐๐๐ข๐๋ฅผ ์ถ๋ ฅํ๋ค. (๋จ, 0 ≤ ๐ ≤ ๐ −1) print(): ๋ฐฐ์ด ๐ด๐๐์ ๋ชจ๋ ๊ฐ์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ์ง์ด ..

https://thewayaboutme.tistory.com/91 c++ singly linked list ๋จ์ผ ๋งํฌ๋ ๋ฆฌ์คํธ ๊ตฌํ * ๋ณธ๋ฌธ์ (๋ฒํ์์ ์ฃผ์ํ์ฌ, 2013)์ ๊ณต๋ถํ๋ฉด์ ์์ฑํ ๊ธ์ ๋๋ค. ํฅํ ๊ฐ์ฒด์งํฅ ๋ฐ ์๋ฃ๊ตฌ์กฐ ์์ ์ ๋ค์ผ๋ฉฐ ์ ํํ + ์ต์ ๋ด์ฉ ์ดํด๋ฅผ ๋ฐ์ํ์ฌ ๋ณด์ํด ๋๊ฐ ๊ฒ์ ๋๋ค. 1. ๋ฌธ์์ด ๋ฆฌ์คํธ๋ฅผ ๊ฐ thewayaboutme.tistory.com ์ด ๊ธ์ ์ ๋ธ๋ก๊ทธ ๊ธ์ ์ฐธ๊ณ ํ์ฌ ์์ฑ๋์์ต๋๋ค. ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์ฌ๋ฌ๊ฐ์ง ๊ฐ๋ค์ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ ์ค ๊ฐ์ฅ ๋ํ์ ์ธ ๊ฒ์ ์๋ง ๋ฐฐ์ด(Array)์ผ ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ ๋ฐฐ์ด์ ๊ฒฝ์ฐ ์ค๊ฐ์ ์๋ ์์๋ฅผ ์ญ์ ํ๊ฑฐ๋, ๊ฐ์ ์ฝ์ ํ ๋ ๊ต์ฅํ ๋นํจ์จ์ ์ด๋ค. ๋ง์ฝ ์๋์ ๊ฐ์ ๋ฐฐ์ด์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์ฌ๊ธฐ์ 22๋ฅผ ์ญ์ ํ๋ ค ํ..