๐ Computer Science
[C] ์ด์ง ํ์ ํธ๋ฆฌ(BST)
์ด์ง ํ์ ํธ๋ฆฌ(BST) ๊ฐ๊ฐ์ ๋ ธ๋๊ฐ ์ต๋ 2๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ฐ์ง๋ ์ด์ง ํธ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ๊ณ ์๋ค. ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ๊ตฌํ๋๋ค. ๊ธฐ๋ณธ ์๋ฆฌ ๋ชจ๋ ๋ ธ๋์ ๊ฐ์ ์ ์ผํ๋ค. ๋ฃจํธ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์ ์๋ ๊ฐ๋ค์ ๋ฃจํธ ๋ ธ๋์ ๊ฐ๋ณด๋ค ์๋ค. ๋ฃจํธ ๋ ธ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฅธ์ชฝ์ ์๋ ๊ฐ๋ค์ ๋ฃจํธ ๋ ธ๋์ ๊ฐ๋ณด๋ค ํฌ๋ค. ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ์๋ธ ํธ๋ฆฌ๋ ์ด์ง ํ์ ํธ๋ฆฌ์ด๋ค. ๋ฌธ์ #include using namespace std; typedef struct node_struct { int data; struct node_struct* left; struct node_struct* right; }node; node* insert_node(node* root, int value) { if (root == NULL) { root..
[C++] binary_search, lower_bound, upper_bound
binary_search, lower_bound, upper_bound ์ ๋ ฌ๋์ด ์๋ ๋ฐฐ์ด, ์ปจํ ์ด๋ ๋ฑ์ ๋์์ผ๋ก ํ์ํ๋ค. binary_search: ํ์ ๋์์ด ๋๋ ๊ฐ์ด ์กด์ฌํ๋์ง ํ์ธํ๊ณ ๋ค์ด ์๋ค๋ฉด true, ์๋ค๋ฉด false๋ฅผ ๋ฐํํ๋ค. lower_bound: ์ฐพ๊ณ ์ ํ๋ ๊ฐ ์ด์์ด ์ฒ์ ๋ํ๋๋ ์์น๋ฅผ ๋ฐํํ๋ค. upper_bound: ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ ์ด๊ณผํ๋ ๊ฐ์ด ์ฒ์ ๋ํ๋๋ ์์น๋ฅผ ๋ฐํํ๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/12015 12015๋ฒ: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด 2 ์ฒซ์งธ ์ค์ ์์ด A์ ํฌ๊ธฐ N (1 ≤ N ≤ 1,000,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ์์ด A๋ฅผ ์ด๋ฃจ๊ณ ์๋ Ai๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ Ai ≤ 1,000,000) www..
[C++] ์ด๋ถ ํ์(Binary Search)
์ด๋ถ ํ์(Binary Search) ์ ํ ์๋ฃ๊ตฌ์กฐ๊ฐ ์ ๋ ฌ๋์ด ์์ ๋ ํน์ ํ ๊ฐ์ ๋น ๋ฅด๊ฒ ์ฐพ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/1920 1920๋ฒ: ์ ์ฐพ๊ธฐ ์ฒซ์งธ ์ค์ ์์ฐ์ N(1≤N≤100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ N๊ฐ์ ์ ์ A[1], A[2], …, A[N]์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ M(1≤M≤100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ M๊ฐ์ ์๋ค์ด ์ฃผ์ด์ง๋๋ฐ, ์ด ์๋ค์ด A์์ ์กด์ฌํ๋์ง ์์๋ด๋ฉด ๋๋ค. ๋ชจ๋ ์ ์์ ๋ฒ์๋ -231 ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ 231๋ณด๋ค ์๋ค. www.acmicpc.net #include #include using namespace std; int main() { int N, M; int a[100000]; cin >> N..
[C++] ๋ถํ ์ ๋ณต(Divide and Conquer)
๋ถํ ์ ๋ณต(Divide and Conquer) ๋ง ๊ทธ๋๋ ๋ฌธ์ ๋ฅผ ๋ถํ ๊ณผ ์ ๋ณต์ผ๋ก ๋๋ ์ ํด๊ฒฐํ๋ ๊ฒ์ ๋งํ๋ค. ๋ถํ ๋จ๊ณ์์๋ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ๋ถ๋ถ ๋ฌธ์ ๋ค๋ก ๋๋๋๋ฐ, ๋ฌธ์ ๊ฐ ์์์ง์๋ก ํ๊ธฐ ์ฌ์์ง๊ธฐ ๋๋ฌธ์ด๋ค. ๋์ฒด๋ก ๋ถํ ์ ๋ณต์ ์ฌ๊ท ํธ์ถ์ ์ฌ์ฉํ๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/1992 1992๋ฒ: ์ฟผ๋ํธ๋ฆฌ ์ฒซ์งธ ์ค์๋ ์์์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ์ซ์ N ์ด ์ฃผ์ด์ง๋ค. N ์ ์ธ์ ๋ 2์ ์ ๊ณฑ์๋ก ์ฃผ์ด์ง๋ฉฐ, 1≤N ≤64์ ๋ฒ์๋ฅผ ๊ฐ์ง๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ๋ ๊ธธ์ด N ์ ๋ฌธ์์ด์ด N ๊ฐ ๋ค์ด์จ๋ค. ๊ฐ ๋ฌธ์์ด์ 0 ๋๋ 1์ ์ซ์๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์์์ ๊ฐ ์ ๋ค์ ๋ํ๋ธ๋ค. www.acmicpc.net #include #include using namespace..
[C++] ๊ทธ๋ฆฌ๋(Greedy)
๊ทธ๋ฆฌ๋(Greedy) ๊ฐ ๋จ๊ณ์์ ์ต์ ์ ์ ํ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ์์ ๊ธฐ๋ฒ์ด๋ผ๊ณ ๋ ๋ถ๋ฅธ๋ค. ์ฆ, ๋ง ๊ทธ๋๋ก ๋์์ ๊ฐ์ฅ ํฐ ์ด์ต๋ง ์ข๋ ๊ธฐ๋ฒ์ด๋ค. ๋ฌธ์ https://www.acmicpc.net/problem/1931 1931๋ฒ: ํ์์ค๋ฐฐ์ (1,4), (5,7), (8,11), (12,14) ๋ฅผ ์ด์ฉํ ์ ์๋ค. www.acmicpc.net #include #include #include using namespace std; int main() { int n; cin >> n; vector v(n); // ๋๋๋ ์๊ฐ, ์์ ์๊ฐ for (int i = 0; i > v[i].second >> v[i].first; sort(v.begin(), v.end()); int ans..
[C++] ๋ฐฑ ํธ๋ํน(Back Tracking)
๋ฐฑ ํธ๋ํน(Back Tracking) ํ์ ์กฐ๊ฑด์ด ์ฃผ์ด์ก์ ๋ ํด๋ฅผ ์ป์ ๋๊น์ง ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ฒ์ฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ฐ๋ค๊ฐ ๋ค์ ๋์์์ ๋ค๋ฅธ ๊ธธ๋ก ๊ฐ๋ค. ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ฏ๋ก ์ฌ๊ท ํจ์๋ฅผ ์ด์ฉํ DFS๋ฅผ ์ฌ์ฉํ๋ค. ๊ธฐ๋ณธ ์๋ฆฌ https://www.acmicpc.net/problem/15649 15649๋ฒ: N๊ณผ M (1) ํ ์ค์ ํ๋์ฉ ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ด์ ์ถ๋ ฅํ๋ค. ์ค๋ณต๋๋ ์์ด์ ์ฌ๋ฌ ๋ฒ ์ถ๋ ฅํ๋ฉด ์๋๋ฉฐ, ๊ฐ ์์ด์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํด์ผ ํ๋ค. ์์ด์ ์ฌ์ ์์ผ๋ก ์ฆ๊ฐํ๋ ์์๋ก ์ถ๋ ฅํด์ผ ํ๋ค. www.acmicpc.net #include using namespace std; int n, m; int number[8]; bool ck[9]; // ์ค๋ณต ์์ด M๊ฐ๋ฅผ ๊ณ ๋ฅธ ์..