๐Ÿ—ฏ๏ธLanguage/C++ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ

ํ•ด๋‹น ๊ธ€ 15๊ฑด

๐Ÿ”—ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค | ํ‰๊ท ๊ฐ’ ๊ตฌํ•˜๊ธฐ ๋ฌธ์ œ๋ฅผ ํ’€๋ ค๋‹ค๊ฐ€, STL ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ๋ฌด์—‡์ด ์žˆ๋Š”์ง€๋„ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์ฐพ์•„๋ณด๋‹ˆ, ๋ˆ„์  ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•ด์ฃผ๋Š” ํ•จ์ˆ˜, std::accumulate()๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. C++ 17์—์„œ ์ถ”๊ฐ€๋œ ํ•จ์ˆ˜๋กœ, ํ—ค๋”ํŒŒ์ผ์„ #include ํ•ด์ค˜์•ผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. #include std::accumulate(์‹œ์ž‘ ์œ„์น˜, ๋ ์œ„์น˜ - 1, ์ดˆ๊ธฐ๊ฐ’); ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์–ป์€ ๋ฐ˜ํ™˜๊ฐ’์€ ์ดˆ๊ธฐ๊ฐ’์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋”ฐ๋ผ๊ฐ„๋‹ค๊ณ  ํ•˜๋„ค์š”. ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด long ํƒ€์ž…์„ ์“ฐ๊ณ  ์‹ถ์œผ์‹  ๋ถ„๋“ค์€ ์ดˆ๊ธฐ๊ฐ’์— 0์ด ์•„๋‹Œ 0L์„ ์ค˜์•ผํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ‰๊ท ๊ฐ’ ๊ตฌํ•˜๊ธฐ ๋ฌธ์ œ ์†Œ์Šค์ฝ”๋“œ #include #include #include using namespace std; double solution(vector numbers) { i..

๐Ÿ—ฏ๏ธLanguage/C++ 2023. 1. 29. 22:18

์ถ”์ƒ ํด๋ž˜์Šค์˜ ํ•„์š”์„ฑ class Monster { public: Monster() {} virtual ~Monster() {} virtual void Attack() }; ์Šฌ๋ผ์ž„, ๋ฆฌ๋ณธ๋ผ์ง€ ๋“ฑ์˜ ๋ชฌ์Šคํ„ฐ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์˜ˆ์ •์ธ๋ฐ, ์ด๋“ค์€ ๋ชจ๋‘ ๊ณต๊ฒฉ(Attack)์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง„๋‹ค. ์ด๋“ค์€ ์ €๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ณต๊ฒฉ์„ ๊ตฌ์‚ฌํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์Šฌ๋ผ์ž„๊ณผ ๋ฆฌ๋ณธ๋ผ์ง€์˜ ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ Monster ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ Attack() ๋ฉ”์†Œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด Monster ํด๋ž˜์Šค๋Š” ๊ณตํ†ต๋œ ๋ฉค๋ฒ„๋ฅผ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ ์šฉ๋„์ผ ๋ฟ์ด์ง€, ์‹ค์ œ ๊ฐ์ฒด ์ƒ์„ฑ์€ ์š”๊ตฌ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ฐ€์ƒ ํ•จ์ˆ˜๋กœ๋„ ๊ณต๊ฒฉ ๋ฉ”์†Œ๋“œ์˜ ๋‹คํ˜•์„ฑ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•˜๋Š” ๊ฑธ ๊นŒ๋จน์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ๋“ค์„ ๋งŒ์กฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค..

๐Ÿ—ฏ๏ธLanguage/C++ 2022. 7. 7. 17:46

์ •์  ๋ฐ”์ธ๋”ฉ(Static binding)์ด ์˜ค๋ฒ„๋ผ์ด๋“œ ๋ฉ”์†Œ๋“œ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด๋ฅผ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค ๋ณด๋ฉด, ๋ถ€๋ชจ ํด๋ž˜์Šค๋กœ ์ž์‹ ํด๋ž˜์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์—… ์บ์ŠคํŒ…(Upcasting)์„ ์‚ฌ์šฉํ•  ๋•Œ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.Parent* obj = new Child(); ์šฐ๋ฆฌ ์ž…์žฅ์—์„œ๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค ํฌ์ธํ„ฐ๋กœ ์ž์‹ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๊ตฌ๋‚˜๋ผ๊ณ  ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ปดํ“จํ„ฐ ์ž…์žฅ์—์„œ๋Š” ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ํฌ์ธํ„ฐ์ด๋ฏ€๋กœ ๋‹น์—ฐํžˆ ๋ถ€๋ชจ ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ž์‹ ํด๋ž˜์Šค์— ์˜ค๋ฒ„๋ผ์ด๋”ฉ(Overriding)๋œ ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.Parent* p = new Parent();Parent* c = new Child();p->Function(); // Parent ํด๋ž˜์Šค์˜ Fun..

๐Ÿ—ฏ๏ธLanguage/C++ 2022. 7. 7. 16:28

/* ๋ณธ ๊ธ€์€ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์—ฌ ๊ณต๋ถ€ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. */ ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ(Operator Overloading) ์˜ค๋ฒ„๋กœ๋”ฉ (Overloading) ๊ฐ์ฒด์ง€ํ–ฅ์–ธ์–ด์—์„œ ๋‚˜์˜ค๋Š” ๊ฐœ๋…์œผ๋กœ, ๋™์ผํ•œ ์ด๋ฆ„์ด์ง€๋งŒ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ํ•จ์ˆ˜ ์˜ค๋ฒ„๋กœ๋”ฉ์ด ์žˆ์Œ C++์—์„œ๋Š” ์—ฐ์‚ฐ์ž ๋˜ํ•œ ์˜ค๋ฒ„๋กœ๋”ฉ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฒ”์œ„์ง€์ • ์—ฐ์‚ฐ์ž(::), ๋ฉค๋ฒ„ ์ง€์ • ์—ฐ์‚ฐ์ž(.), ๋ฉค๋ฒ„ ํฌ์ธํ„ฐ ์ง€์ • ์—ฐ์‚ฐ์ž (.*)๋Š” ์˜ค๋ฒ„๋กœ๋”ฉํ•  ์ˆ˜ ์—†๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ์ž๋ฃŒํ˜•์— ์ ์šฉํ•  ๋•Œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋น„์ •์  ํด๋ž˜์Šค ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ๋˜๋Š” ์ „์—ญ ํ•จ์ˆ˜์ด์–ด์•ผ ํ•œ๋‹ค. ์˜ค๋ฒ„๋กœ๋”ฉ ๊ฐ€๋Šฅํ•œ ์—ฐ์‚ฐ์ž๋“ค ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž (+, -, *, ...) ๋น„๊ต ์—ฐ์‚ฐ์ž (==, !=, ...) ๋Œ€์ž… ์—ฐ์‚ฐ์ž (=) ๋ณตํ•ฉ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž (+=, -=, ..) ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž..

๐Ÿ—ฏ๏ธLanguage/C++ 2022. 3. 8. 13:43