728x90

๐Ÿ“ Coding Test Study/C++ 28

[C++] ๋ฒกํ„ฐ, ๋ฐฐ์—ด ํŠน์ • ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ (fill ํ•จ์ˆ˜)

๋ฒกํ„ฐ, ๋ฐฐ์—ด์„ 0์ด ์•„๋‹Œ ํŠน์ • ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜๊ณ  ์‹ถ์„ ๋•Œ, fill ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. *ํ—ค๋”:  1) 1์ฐจ์› ๋ฐฐ์—ด#include #include #include int main(){ int arr[5] = {0, 1, 2, 3, 4}; fill(arr[0], arr[0] + 5, -1); return 0;} 2) 2์ฐจ์› ๋ฐฐ์—ด#include #include int main(){ int arr[5][2] = {{0,0}, {0,1}, (0,2}, {0,3}, {0,4}}; fill(arr[0][0], arr[0][0] + (5*2), -1); return 0;} 3) ๋ฒกํ„ฐ#include #include #include int main(){ vector v{0, 1, 2..

[C++][์ž๋ฃŒ๊ตฌ์กฐ] 1์ฐจ์›/2์ฐจ์› ๋ฐฐ์—ด ๋ณต์‚ฌ, ๋ฒกํ„ฐ ๋ณต์‚ฌ

C++ ์—์„œ ์ œ๊ณตํ•˜๋Š” copy ๋ฌธ์€ copy, copy_if ๊ฐ€ ์žˆ๊ณ  copy_if ๋ฅผ ์“ฐ๋ฉด ์กฐ๊ฑด๋ฌธ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ—ค๋”#include  ํ•จ์ˆ˜copy(์‹œ์ž‘ ์ง€์ , ๋ ์ง€์ , ๋ณต์‚ฌ๋  ๋ณ€์ˆ˜ ์‹œ์ž‘์ง€์ );copy_if( ์‹œ์ž‘ ์ง€์ , ๋ ์ง€์ , ๋ณต์‚ฌ๋  ๋ณ€์ˆ˜ ์‹œ์ž‘์ง€์ , ์กฐ๊ฑด); ์˜ˆ์‹œ1) 1์ฐจ์› ๋ฐฐ์—ด ๋ณต์‚ฌ#include #include int main(){ int arr[4] = {1, 2, 3, 4}; int copiedArr[4] = {0, }; copy(arr, arr+4, copiedArr); return 0;} 2) 2์ฐจ์› ๋ฐฐ์—ด ๋ณต์‚ฌ#include #include int main(){ int arr[2][4] = {{0,-1}, {0,1}, {-1,0}, {1,0..

[10์ฃผ ์™„์„ฑ C++ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ๊ธฐ๋ณธ๊ฐœ๋… :: ๋น„ํŠธ๋งˆ์Šคํฌ

1. ์ด์ง„์ˆ˜. Boolean ๋ฐฐ์—ด/๋ฒกํ„ฐ.128 64 32 16 8 4 2 1  1    0   1   1  0 0 0 0(176)0001001000110100010101100111100012345678  2. ๋น„ํŠธ ์—ฐ์‚ฐ์ž&๋น„ํŠธ๋‹จ์œ„๋กœ AND ์—ฐ์‚ฐ|๋น„ํŠธ๋‹จ์œ„๋กœ OR ์—ฐ์‚ฐ^๋น„ํŠธ๋‹จ์œ„๋กœ XOR ์—ฐ์‚ฐ(๊ฐ™์œผ๋ฉด 0, ๋‹ค๋ฅด๋ฉด 1)~ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ชจ๋“  ๋น„ํŠธ ๋ฐ˜์ „ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋น„ํŠธ ์—ด์„ ์™ผ์ชฝ์œผ๋กœ ์ด๋™>>ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋น„ํŠธ ์—ด์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ * 10์ง„์ˆ˜ -> 2์ง„์ˆ˜ ๋ณ€ํ™˜ ์‚ฌ์ดํŠธ Decimal to Binary ConverterDivide by the base 2 to get the digits from the remainders: Divisionby 2 Quotient Remainder(Digit) Bit #www.rapidtable..

ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);

๊ฐ€๋” ์ œํ•œ์‹œ๊ฐ„์„ ๋„˜๊ธฐ์ง€ ์•Š์•˜๋Š”๋ฐ๋„ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚  ๋•Œ๊ฐ€ ์žˆ๋‹ค.๊ทธ ๋• ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ฝ”๋“œ ์‹œ์ž‘ ์ „์— ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐ์ด ๋˜๊ธฐ๋„ ํ•œ๋‹ค. ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false);C์™€ C++ ํ‘œ์ค€ ์ŠคํŠธ๋ฆผ ๊ฐ„์˜ ๋™๊ธฐํ™”๋ฅผ ๋น„ํ™œ์„ฑํ™”์‹œํ‚จ๋‹ค. ๋™๊ธฐํ™”๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด C++ ์ŠคํŠธ๋ฆผ์ด ์ž์ฒด ๋…๋ฆฝ ๋ฒ„ํผ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ ๋ฒ„ํผ ์ˆ˜๊ฐ€ ์ค„์–ด์„œ ์‹คํ–‰์†๋„๊ฐ€ ๋นจ๋ผ์ง„๋‹ค(+). ๋‹ค๋งŒ ๋ถ€์ž‘์šฉ์€ ๋ชจ๋“  IO์˜ ์ˆœ์„œ๊ฐ€ ์˜ˆ์ƒํ•œ ๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ์ผ์น˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. c ์˜ ์ž…์ถœ๋ ฅ์ฝ”๋“œ์™€ c++ ์˜ ์ž…์ถœ๋ ฅ์ฝ”๋“œ๋ฅผ ํ˜ผ์šฉํ•ด์„œ ์“ฐ๋ฉด ์•ˆ๋œ๋‹ค(-). cin.tie(NULL); cout.tie(NULL);C++ ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ cin๊ณผ c..

[10์ฃผ ์™„์„ฑ C++ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ๋ˆ„์ ํ•ฉ, Prefix Sum

* ๋ˆ„์ ํ•ฉ: ์–ด๋–ค ๋ฐฐ์—ด์˜ ์•ž ์š”์†Œ๋ถ€ํ„ฐ ๋ˆ„์ ๋œ ํ•ฉ์„ ์ €์žฅํ•œ ๋ฐฐ์—ด. ์•ž์—์„œ๋ถ€ํ„ฐ ๋”ํ•˜๋Š” prefix sum๊ณผ ๋’ค์—์„œ ๋ถ€ํ„ฐ ๋”ํ•˜๋Š” suffix sum ์ด ์žˆ๋‹ค. ๋ฐฐ์—ด์˜ ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ •์  ๋ณ€์ˆ˜์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. * ๋ˆ„์ ํ•ฉ์ด ํ•„์š”ํ•œ ์˜ˆ์‹œ๋ฌธ์ œ ๋ฌธ์ œ ์Šน์ฒ ์ด๋Š” ๋‡Œ๋ฅผ ์žƒ์–ด๋ฒ„๋ ธ๋‹ค. ํ•™๊ต์— ๊ฐ”๋”๋‹ˆ ์„ ์ƒ๋‹˜์ด ์ž์—ฐ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ N๊ฐœ์˜ ์นด๋“œ๋ฅผ ์ฃผ๋ฉฐ M๊ฐœ์˜ ์งˆ๋ฌธ์„ ๋˜์ง„๋‹ค. ๊ทธ ์งˆ๋ฌธ์€ ๋‚˜์—ดํ•œ ์นด๋“œ ์ค‘ A๋ฒˆ์งธ๋ถ€ํ„ฐ B๋ฒˆ์งธ๊นŒ์ง€์˜ ํ•ฉ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‡Œ๋ฅผ ์žƒ์–ด๋ฒ„๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ์Šน์ฒ ์ด๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜๊ฐ€ ์—†๋‹ค. ๋ฌธ์ œ๋ฅผ ํ’€ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด๋ณด์ž. ์ž…๋ ฅ ์ˆ˜์˜ ๊ฐœ์ˆ˜N, ํ•ฉ์„ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ํšŸ์ˆ˜ M, ๊ทธ ์ดํ›„ N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ˆ˜๋Š” 100์ดํ•˜์˜ ์ž์—ฐ์ˆ˜. ๊ทธ ์ดํ›„ M๊ฐœ์˜ ์ค„์—๋Š” ํ•ฉ์„ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ๊ตฌ๊ฐ„ A, B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ถœ๋ ฅ M..

[10์ฃผ ์™„์„ฑ C++ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ํ•„์ˆ˜๊ฐœ๋… - map, unique()

์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ ์ค‘๋ณต์—†๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ผ๊ณ  ํ•  ๋•Œ, map ์ด๋‚˜ unique ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•œ๋‹ค. 1. map #include #include #include using namespace std; map mp; int main() { vector v{ 1,1,2,2,3,3 }; for (int i : v) { if (mp[i]) continue; else mp[i] = 1; } vector ret; for (auto it : mp) { ret.push_back(it.first); } for (int i : ret) cout

[10์ฃผ ์™„์„ฑ C++ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ํ•„์ˆ˜๊ฐœ๋… - ๋ฉ”๋ชจ๋ฆฌ์™€ ํฌ์ธํ„ฐ(pointer)

* ๋ฉ”๋ชจ๋ฆฌ ์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์…€์˜ ์—ฐ์†๊ณผ ๊ฐ™๋‹ค. ๊ฐ ์…€์˜ ํฌ๊ธฐ๋Š” 1byte ์ด๊ณ  ๊ณ ์œ ์˜ ์ฃผ์†Œ๊ฐ€ ์žˆ๋‹ค. int i; ์œ„์™€ ๊ฐ™์ด int ํƒ€์ž…์„ ์„ ์–ธํ•˜๋ฉด 4Byte์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์—์•ฝํ•˜๊ฒŒ ๋œ๋‹ค. ์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ 128GB ๋ผ๊ณ  ํ•  ๋•Œ, 128GB ์ค‘ 4Byte์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ์˜ˆ์•ฝํ•˜๋Š” ๊ฒƒ. cout

[10์ฃผ ์™„์„ฑ C++ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ๋ฌธ์ž์—ด ํ•„์ˆ˜๊ฐœ๋… - split(), substr(), erase()

* split(): ํŠน์ • ๋ฌธ์ž์—ด์„ ๊ธฐ์ค€์œผ๋กœ ์ชผ๊ฐœ๋Š” ํ•จ์ˆ˜. C++ ์—์„  ์ง€์›ํ•˜์ง€ ์•Š์•„์„œ ์ง์ ‘ ๊ตฌํ˜„ํ•ด์•ผ ํ•จ. * ์‹œ๊ฐ„๋ณต์žก๋„: O(n) * ๋„์–ด์“ฐ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ชผ๊ฐœ๋Š” ์˜ˆ์‹œ ์ฝ”๋“œ. ์•”๊ธฐ โ˜…โ˜…โ˜…โ˜…โ˜… #include #include #include using namespace std; vector split(string input, string delimiter) { vector ret; long long pos = 0; string token = ""; while ((pos = input.find(delimiter)) != string::npos) { token = input.substr(0, pos); // "์•ˆ๋…•ํ•˜์„ธ์š”" ret.push_back(token); input.erase(0, pos + de..

[10์ฃผ ์™„์„ฑ C++ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ] ํ•„์ˆ˜๊ฐœ๋… - ์ˆœ์—ด(Permutation), ์กฐํ•ฉ(Combination)

์ˆœ์„œ์™€ ์ƒ๊ด€ O ๋ฝ‘๋Š”๋‹ค๋ฉด >> ์ˆœ์—ด ์ˆœ์„œ์™€ ์ƒ๊ด€ X ๋ฝ‘๋Š”๋‹ค๋ฉด >> ์กฐํ•ฉ ์ˆœ์„œ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ... ~ํ•œ ์ˆœ์„œ์˜ ๊ฒฝ์šฐ max ๊ฐ’์„ ๊ตฌํ•˜์‹œ์˜ค ๋“ฑ๋“ฑ์˜ ๋ฌธ์ œ >> ์ˆœ์—ด ! * ์ˆœ์—ด ํ•จ์ˆ˜ next_permutation(์˜ค๋ฆ„์ฐจ์ˆœ) prev_permutation(๋‚ด๋ฆผ์ฐจ์ˆœ) * ์˜ˆ์‹œ ์ฝ”๋“œ #include using namespace std; int main() { int a[] = {1,2,3}; do{ for(int i : a) cout

728x90