๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ199

[0x04] ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ์ •์˜์™€ ์„ฑ์งˆ ์„ฑ์งˆ ์ž„์˜์˜ ์œ„์น˜์— ์žˆ๋Š” ์›์†Œ๋ฅผ ํ™•์ธ/๋ณ€๊ฒฝ : O(N) (๋ถˆ์—ฐ์†์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ ์›์†Œ๊นŒ์ง€ ์ฐพ์•„๊ฐ€์•ผ ํ•จ) ์ž„์˜์˜ ์œ„์น˜์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€/์ œ๊ฑฐ : O(1) ์›์†Œ๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์ง€ ์•Š์•„ cache hit rate๊ฐ€ ๋‚ฎ์ง€๋งŒ ํ• ๋‹น์ด ๋‹ค์†Œ ์‰ฌ์›€ ์ข…๋ฅ˜ ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ single linked list ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ doubly linked list ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ circular linked list ๋ฐฐ์—ด vs ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ overhead : ์•ž, ๋’ค ์›์†Œ์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค (2^n byte์ด๋ฉด n๋งŒํผ ์ถ”๊ฐ€๋กœ ํ•„์š”) ๊ตฌํ˜„ struct Node { struct Node *prev, *next; int data; } ์•ผ๋งค ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ const int MAX = 1000005; in.. 2023. 6. 20.
[0x03] ๋ฐฐ์—ด ๋ฐฐ์—ด ์ •์˜ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์›์†Œ๋ฅผ ์—ฐ์†ํ•˜๊ฒŒ ๋ฐฐ์น˜ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ์„ฑ์งˆ O(1)์— k๋ฒˆ์งธ ์›์†Œ๋ฅผ ํ™•์ธ/๋ณ€๊ฒฝ ๊ฐ€๋Šฅ ์ถ”๊ฐ€์ ์œผ๋กœ ์†Œ๋ชจ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์˜ ์–‘ overhead๊ฐ€ ๊ฑฐ์˜ ์—†์Œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ™์–ด์žˆ์œผ๋ฏ€๋กœ cache hit rate๊ฐ€ ๋†’์Œ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์—ฐ์†ํ•œ ๊ตฌ๊ฐ„์„ ์žก์•„์•ผ ํ•ด์„œ ํ• ๋‹น์— ์ œ์•ฝ์ด ๊ฑธ๋ฆผ ์—ฐ์‚ฐ ์ž„์˜์˜ ์œ„์น˜ ์›์†Œ ํ™•์ธ/๋ณ€๊ฒฝ : O(1) ์›์†Œ๋ฅผ ๋์— ์ถ”๊ฐ€ / ๋งˆ์ง€๋ง‰ ์›์†Œ ๋ณ€๊ฒฝ : O(1) ์ž„์˜์˜ ์œ„์น˜์— ์›์†Œ ์ถ”๊ฐ€/์ œ๊ฑฐ : O(N) → ๋’ค์— ์›์†Œ๋“ค ํ•œ ์นธ ๋’ค๋กœ ๋ฐ€์–ด์•ผ ํ•จ ์ดˆ๊ธฐํ™” ์ „์—ญ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•  ๊ฒฝ์šฐ int๋Š” 0์œผ๋กœ ์ดˆ๊ธฐํ™” ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์“ฐ๋ ˆ๊ธฐ๊ฐ’ ๋“ค์–ด๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— { } ๋“ฑ์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•จ int a[21]; int b[21][21]; memset (๋น„์ถ”์ฒœ) memset(a, 0, sizeof a); memset(b, 0, .. 2023. 6. 20.
[0x02] ๊ธฐ์ดˆ ์ฝ”๋“œ ์ž‘์„ฑ ์š”๋ น 2 ํ•จ์ˆ˜ ์ธ์ž ๋ฐฐ์—ด์„ ์ธ์ž๋กœ ๋„˜๊ธฐ๋ฉด ์ฃผ์†Œ๊ฐ’์ด ๋„˜์–ด๊ฐ„๋‹ค ๋ณ€์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋„˜๊ธฐ๋ฉด ๋ณต์‚ฌ๋œ ๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค & (reference)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฐธ์กฐ ๋Œ€์ƒ์˜ ์ฃผ์†Œ ์ •๋ณด๋งŒ ๋„˜์–ด๊ฐ STL standard template library STL์„ ํ•จ์ˆ˜ ์ธ์ž๋กœ ๋„˜๊ธธ ๋•Œ ๊ทธ๋ƒฅ STL์„ ํ•จ์ˆ˜ ์ธ์ž๋กœ ์‹ค์–ด๋ณด๋‚ด๋ฉด ๋ณต์‚ฌ๋ณธ์„ ๋„˜๊ธฐ๋Š” ๊ฒƒ // ํฌ๊ธฐ๊ฐ€ n์ธ vector 2๊ฐœ๋ฅผ ๋น„๊ตํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ // n๋งŒํผ ๋ณต์‚ฌํ•˜๊ณ  ๋ณด๋‚ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— O(N) ์‹œ๊ฐ„ ๋ณต์žก๋„ bool cmp1(vector v1, vector v2, int idx){ return v1[idx] > v2[idx] } ํ‘œ์ค€ ์ž…์ถœ๋ ฅ ๊ณต๋ฐฑ ํฌํ•จ ๋ฌธ์ž์—ด ์ž…๋ ฅ scanf์™€ cin ๋ชจ๋‘ ๊ณต๋ฐฑ ํฌํ•จ ๋ฌธ์ž์—ด ์ž…๋ ฅ์ด ๊นŒ๋‹ค๋กญ๋‹ค ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• scanf์˜ ์˜ต์…˜ char a1[10]; scanf("%[^\.. 2023. 6. 20.
[0x01] ๊ธฐ์ดˆ ์ฝ”๋“œ ์ž‘์„ฑ ์š”๋ น 1 ๊ณต๊ฐ„๋ณต์žก๋„ 512 MB = 1.2์–ต๊ฐœ int ( 1 int = 4B) ⇒ ์ด๋ ‡๊ฒŒ ํ’€์ด๋˜๋ฉด ํ‹€๋ฆฐ ๊ฒƒ! ์ •์ˆ˜ ์ž๋ฃŒํ˜• char (1 byte) : 2^7 - 1(127) short (2 byte) : 2^15 - 1(32767) int (4 byte) : 2^31 - 1 = 2.1 * 10^9 (21์–ต) long long (8 byte) : 2^63 - 1 = 9.2 * 10^18 ์‹ค์ˆ˜ ์ž๋ฃŒํ˜• 2์˜ ์Œ์ˆ˜ ์Šน์„ ์ด์šฉํ•ด ์ด์ง„์ˆ˜๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Œ float (4byte) double (8byte) ์‹ค์ˆ˜์˜ ์ €์žฅ/์—ฐ์‚ฐ ๊ณผ์ •์—์„œ ๋ฐ˜๋“œ์‹œ ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜๋ฐ–์— ์—†๋‹คfraction field์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ์œ ํ•œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌดํ•œ์†Œ์ˆ˜๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๊ณ  ์ž๋ฃŒํ˜•์— ๋”ฐ๋ผ ๋ฐ˜์˜ฌ๋ฆผํ•ด์•ผ ํ•จ float : ์œ ํšจ์ˆซ์ž 6์ž๋ฆฌ double .. 2023. 6. 20.