๋ชฉ๋ก๐ก ์๊ณ ๋ฆฌ์ฆ (4)
Hello, ๋๋'s world !
https://plzrun.tistory.com/entry/์๊ณ ๋ฆฌ์ฆ-๋ฌธ์ ํ์ดPS-์์ํ๊ธฐ [plzrun's algorithm]
1. ํ(Queue) ํ์ชฝ ๋์์๋ง ์๋ฃ๋ฅผ ๋ฃ๊ณ , ๋ค๋ฅธํ์ชฝ ๋์์๋ง ๋บ์์๋ ์๋ฃ๊ตฌ์กฐ FIFO(First In Firtst Out) ์ ์ ์ ์ถ ํ์์ด๋ค. ์ผ์ฐจ์ ๋ฐฐ์ด ํ๋๋ก ๊ตฌํ๊ฐ๋ฅํ๋ค. int queue[1000]; int begin = 0; int end = 0; //begin ~ end-1 ๊น์ง ํฌํจ ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ณต๋๊ณ ์๋ค. -> ๊ฐ O(1) ์ ์๊ฐ๋ณต์ก๋๋ ๊ฐ๋๋ค - C++ push ํ์ ์๋ฃ๋ฃ๋ ์ฐ์ฐ pop ํ์์ ์๋ฃ๋ฅผ ๋นผ๋ ์ฐ์ฐ front ๊ฐ์ฅ ์์ ์๋ ์๋ฃ๋ฅผ ๋ณด๋ ์ฐ์ฐ back ๊ฐ์ฅ ๋ค์ ์๋ ์๋ฃ๋ ๋ณด๋ ์ฐ์ฐ empty ํ๊ฐ ๋น์ด์๋์ง ์๋์ง ํ์ธ size ํ์ ์ ์ฅ๋์ด์๋ ์๋ฃ์ ๊ฐ์ ์์๋ณด๊ธฐ - Java add() ํ์ ์๋ฃ๋ฃ๋ ์ฐ์ฐ remove() ํ์์ ์๋ฃ๋ฅผ ๋นผ๋ ์ฐ์ฐ ..
์คํ(Stack) :ํ์ชฝ ๋์์ ์๋ฃ๋ฅผ ๋ฃ๊ณ ๋บ๋ ์ฐ์ด๋ ์๋ฃ๊ตฌ์กฐ ๋ชฉ๋ก์ ํ์ชฝ๋์ Top์ด๋ผ๊ณ ํ ๋, Top์์ Push์ Pop์ด ์ด๋ฃจ์ด์ง๋ค. ์ฆ, LIFO(Last In First Out) ํ์์ด๋ค. ์์น์ ์ผ๋ก ์ค๊ฐ์์ ์ญ์ ,์ถ๊ฐ๊ฐ ๋ถ๊ฐ๋ฅํ๋ฉฐ Top์ ์์นํ๊ฒ๋ง ์ ์ ์๋ค. ์ผ์ฐจ์ ๋ฐฐ์ด๋ก ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค. int stack[1000]; int size = 3; //์คํ์ ํฌ๊ธฐ ----------------------------------------------------- //push void push(int data){ stack[size] = data; size += 1 } ------------------------------------------------------- //pop void po..
์๊ฐ๋ณต์ก๋ ๊ณต๊ฐ๋ณต์ก๋ ์ ์ถ๋ ฅ ์ฐ๋ฆฌ๋ ํ์ ๋ ์์์ ๊ฐ๊ณ ์๋ค. ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ์๊ฐ๋ณต์ก๋๊ฐ ๊ต์ฅํ ์ค์ํ๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ 64GB ํ์ํ ์์ ์ด๋ฉด ๊ตฌ๋งคํ๋ฉด๋๋ค. ํ์ง๋ง ๊ตฌ๋งคํด๋ 10์ผ๊ฑธ๋ฆฌ๋ ์์ ์ด๋ผ๋ฉด 10์ผ์ด ์์๋๋ค. ์๊ฐ๋ณต์ก๋ > ๊ณต๊ฐ๋ณต์ก๋ ์ค์ํ๋ค. 1. ์๊ฐ๋ณต์ก๋ Big Oํ๊ธฐ๋ฒ์ผ๋ก ํ๊ธฐ. ex) O(1), O(N), O(N^3)...... ์ฝ๋๋ฅผ ๋ณด๊ธฐ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๋ณด๊ณ ์ํ์๊ฐ์ ๊ณ์ฐํํ ์ ํ์๊ฐ์์ ๊ฐ๋ฅ์ ๊ตฌํ ์ต์ ์ ๊ฒฝ์ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋ํ๋ 1์ต = 1์ด (์ค์ ๋ก๋ 5์ต์ ๋) ex) O(N^3) = 1.25์ต ๊ฐ๋ฅ -> O(1), O(N), O(N^2), O(N^3) ์์๋ ๋ฒ๋ฆฐ๋ค. (ํฐ์๋ค์ด๊ธฐ ๋๋ฌธ์ ์์๋ ๋ณ ์๋ฏธ์์) ex) O(3N) = O(N), O(5) = O(1), ๋..