[C++] binary_search, lower_bound, upper_bound
ยท
๐Ÿ“ Computer Science/โœ Algorithm
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)
ยท
๐Ÿ“ Computer Science/โœ Algorithm
์ด๋ถ„ ํƒ์ƒ‰(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)
ยท
๐Ÿ“ Computer Science/โœ Algorithm
๋ถ„ํ•  ์ •๋ณต(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)
ยท
๐Ÿ“ Computer Science/โœ Algorithm
๊ทธ๋ฆฌ๋””(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)
ยท
๐Ÿ“ Computer Science/โœ Algorithm
๋ฐฑ ํŠธ๋ž˜ํ‚น(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๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ˆ˜..
[C++] ๋ธŒ๋ฃจํŠธ ํฌ์Šค(Brute Force)
ยท
๐Ÿ“ Computer Science/โœ Algorithm
๋ธŒ๋ฃจํŠธ ํฌ์Šค(Brute Force) ์—ฐ์‚ฐ์ด 1์–ตํšŒ๊ฐ€ ์•ˆ ๋„˜์–ด๊ฐˆ ๋•Œ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์™„์ „ ํƒ์ƒ‰์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. ๋ฌธ์ œ https://www.acmicpc.net/problem/1018 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ ์ฒซ์งธ ์ค„์— N๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. N๊ณผ M์€ 8๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋ณด๋“œ์˜ ๊ฐ ํ–‰์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. B๋Š” ๊ฒ€์€์ƒ‰์ด๋ฉฐ, W๋Š” ํฐ์ƒ‰์ด๋‹ค. www.acmicpc.net #include #include using namespace std; bool board[50][50]; int compare(int x, int y, bool white) { int cnt = 0; for (int i = 0; i < 8; i++) { f..