๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ199 [0x08] ์คํ์ ํ์ฉ(์์์ ๊ดํธ ์) ์์์ ๊ดํธ ์ ๊ดํธ์์ด ์ฌ๋ฐ๋ฅธ์ง ์ฒดํฌ ๊ด์ฐฐ ๊ดํธ 1์ข ๋ฅ ๊ดํธ 2์ข ๋ฅ → ์ฐ์๋ ๊ดํธ ์ญ์ ๋ ๊ฐ๋ฅ ํด๊ฒฐ ๋ฐฉ๋ฒ ๋ฌธ์์ด์ ์์์๋ถํฐ ์ฝ์ด๋๊ฐ ๋, ๋ซ๋ ๊ดํธ๋ ๋จ์์๋ ๊ดํธ ์ค์์ ๊ฐ์ฅ ์ต๊ทผ์ ๋ค์ด์จ ์ฌ๋ ๊ดํธ์ ์ง์ ์ง์ด ์์ ๋ฒ๋ฆฌ๋ ๋ช ๋ น์ด๋ผ๊ณ ์๊ฐํด๋ ๋๋ค 2023. 6. 26. [0x07] ๋ฑ ์ ์์ ์ฑ์ง ์ ์ double-ended queue ์์ชฝ ๋์์ ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ์ ๋ถ ๊ฐ๋ฅํ ์๋ฃ ๊ตฌ์กฐ ์ฑ์ง ์์์ ์ถ๊ฐ์ ์ ๊ฑฐ : O(1) ์ ์ผ ์/๋ค์ ์์ ํ์ธ : O(1) ์ ์ผ ์/๋ค์ด ์๋ ๋๋จธ์ง ์์๋ค์ ํ์ธ/๋ณ๊ฒฝ์ด ์์น์ ์ผ๋ก ๋ถ๊ฐ๋ฅ ์ธ๋ฑ์ค๋ก ์์ ์ ๊ทผ ๊ฐ๋ฅ ๊ธฐ๋ฅ๊ณผ ๊ตฌํ const int MAX = 1e7; int data[2*MAX + 1]; int head = MAX, tail = MAX; // ์์ ์ง์ ์ ๋ฐฐ์ด์ ์ค๊ฐ์ผ๋ก : ์๋ค๋ก ํ์ฅ // head : ์์. tail : ๋ค์์ ๋ค์ด๊ฐ ์์์ ์๋ฆฌ void push_front(int x) data[--head] = x; void push_back(int x) data[tail++] = x; void pop_front() head++; v.. 2023. 6. 26. [0x06] ํ ์ ์์ ์ฑ์ง ์ ์ ํ์ชฝ ๋์์ ์์๋ฅผ ๋ฃ๊ณ ๋บ ์ ์๋ ์๋ฃ๊ตฌ์กฐ ์ฑ์ง ์์์ ์ถ๊ฐ์ ์ ๊ฑฐ : O(1) ์ ์ผ ์/๋ค์ ์์ ํ์ธ : O(1) ์ ์ผ ์/๋ค์ด ์๋ ๋๋จธ์ง ์์๋ค์ ํ์ธ/๋ณ๊ฒฝ์ด ์์น์ ์ผ๋ก ๋ถ๊ฐ๋ฅ ๊ธฐ๋ฅ๊ณผ ๊ตฌํ const int MAX = 1e7; int data[MAX]; int head = 0, tail = 0; void push(int x) data[tail++] = x; void pop() head++; int front() return data[head]; int back() return data[tail--]; STL queue #include 2023. 6. 20. [0x05] ์คํ ์ ์์ ์ฑ์ง ์ ์ ํ์ชฝ ๋์์๋ง ์์๋ฅผ ๋ฃ๊ฑฐ๋ ๋บผ ์ ์๋ ์๋ฃ ๊ตฌ์กฐ (restricted structure) ์ฑ์ง ์์์ ์ถ๊ฐ์ ์ ๊ฑฐ : O(1) ์ ์ผ ์๋จ์ ์์ ํ์ธ : O(1) ์ ์ผ ์๋จ์ด ์๋ ๋๋จธ์ง ์์๋ค์ ํ์ธ/๋ณ๊ฒฝ์ด ์์น์ ์ผ๋ก ๋ถ๊ฐ๋ฅ ๊ธฐ๋ฅ๊ณผ ๊ตฌํ ๊ตฌํ const int MAX = 1000005; int data[MAX]; int pos = 0; // ๋ค์์ ์์๊ฐ ์ถ๊ฐ๋ ๋ ์ฝ์ ํด์ผ ํ๋ ๊ณณ (์คํ ๋ด ์์์ ์) void push(int x) data[pos++] = x; void pop() pos--; int top() return data[pos-1]; STL stack #include 2023. 6. 20. ์ด์ 1 ยทยทยท 3 4 5 6 7 8 9 ยทยทยท 50 ๋ค์