Blog
About Me
citeFredโs Blog
/
Tags
/
Algorithm&DataStructure
Blog
About Me
citeFredโs Blog
/
Tags
/
Algorithm&DataStructure
Share
Blog
About Me
๐ท๏ธ
Algorithm&DataStructure
# of Posts
10
1 more property
Gallery
Search
[Algorithm] ๋์ ํผ๋ก๋ (์์ ํ์)
๋ฌธ์ ํด์
โข
๊ณผ๊ฑฐ์ ์๋ชป ํ์๋ ๋ฌธ์ ์ด๋ค. ๋ฉด์ ์ค์์ ์ต์๊ฐ์ ๊ตฌํ์ง๋ง ๊ฐ๋ก, ์ธ๋ก ๊ธธ์ด์ ์ต๋๊ฐ๋ค์ ๊ตฌํด๋ด์ผ ํ๋ค.
โข
๋ฌธ์ ์์ ๊ฐ๋ก ์ธ๋ก๋ผ๋ ๋ช ์นญ์ ํผ๋๋๋ฉด ์๋๋ค.
โข
๋ฐฐ์ด๋ก ๋ฌถ์ธ ์์๋ค์ ๊ฐ๋ก๊ฐ ๋ ์๋, ์ธ๋ก๊ฐ ๋ ์๋ ์๋ ๊ฒ์ ์๊ฐํ๋ฉด๋๋ค.
โข
๋ฐ๋ผ์ ์์(2๊ฐ์ค)์์ ํฐ ๊ฐ์์์ ์ต๋๊ฐ
โข
์์(2๊ฐ์ค)์์ ์์๊ฐ ์์์ ์ต๋๊ฐ
โข
์ ๊ฐ๋ก, ์ธ๋ก๋ก ์ ํ๋ฉด ๋ชจ๋ ์นด๋๋ค์ ๋ฃ์ ์ ์๋ค.
[Algorithm] ์ต์์ง์ฌ๊ฐํ (์์ ํ์-๋ชจ๋ ์์)
Priority Queue?
์ฐ์ ์์ ํ(Priority Queue)๋?
์ผ๋ฐ์ ์ผ๋ก ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ผ์์ ์ผ๋ก ์์๋๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๋ก ์คํ๊ณผ๋ ๋ค๋ฅด๊ฒ FIFO(First In First Out)์ ๊ตฌ์กฐ ์ฆ ๋จผ์ ๋ค์ด์จย ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋๊ฐ๋ ๊ตฌ์กฐ๋ฅผย ๊ฐ์ง๋๋ค. PriorityQueue๋ ๋จผ์ ๋ค์ด์จ ์์๋๋ก ๋ฐ์ดํฐ๊ฐ ๋๊ฐ๋ ๊ฒ์ด ์๋ ์ฐ์ ์์๋ฅผ ๋จผ์ ๊ฒฐ์ ํ๊ณ ๊ทธ ์ฐ์ ์์๊ฐ ๋์ ์๋ฆฌ๋จผํธ๊ฐ ๋จผ์ ๋๊ฐ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค.ย ์ฐ์ ์์ ํ๋ ํ์ ์ด์ฉํ์ฌ ๊ตฌํํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ๋ ์ฐ์ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ต๋ํ ํน์ ์ต์ ํ์ ๊ตฌ์ฑํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ผ ๋ ๋ฃจํธ ๋ ธ๋๋ฅผ ์ป์ด๋ธ ๋ค ๋ฃจํธ ๋ ธ๋๋ฅผ ์ญ์ ํ ๋๋ ๋น ๋ฃจํธ ๋ ธ๋ ์์น์ ๋งจ ๋ง์ง๋ง ๋ ธ๋๋ฅผ ์ฝ์ ํ ํ ์๋๋ก ๋ด๋ ค๊ฐ๋ฉด์ ์ ์ ํ ์๋ฆฌ๋ฅผ ์ฐพ์์ ์ฎ๊ธฐ๋ ๋ฐฉ์์ผ๋ก ์งํ๋ฉ๋๋ค.
Priority Queue์ ํน์ง
1.
ย ๋์ ์ฐ์ ์์์ ์์๋ฅผ ๋จผ์ ๊บผ๋ด์ ์ฒ๋ฆฌํ๋ ๊ตฌ์กฐ (ํ์ ๋ค์ด๊ฐ๋ ์์๋ ๋น๊ต๊ฐ ๊ฐ๋ฅํ ๊ธฐ์ค์ด ์์ด์ผํจ)
2.
ย
๋ด๋ถ ์์๋ ํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์ด์งํธ๋ฆฌ ๊ตฌ์กฐ
๋ก ์ด๋ฃจ์ด์ ธ ์์
3.
ย ๋ด๋ถ๊ตฌ์กฐ๊ฐ ํ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ์ ์๊ฐ ๋ณต์ก๋๋ O(N Log N)
4.
ย ์๊ธ์ค๊ณผ ๊ฐ์ด
์ฐ์ ์์๋ฅผ ์ค์์ํด์ผ ํ๋ ์ํฉ
์์ ์ฐ์
[์๋ฃ๊ตฌ์กฐ] ์ฐ์ ์์ ํ
(Priority Queue)๋?
๋ฌธ์ ํด์
์ฐ์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ๋ ํ์ด ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
โข
1.
์ ๋ ฌ์ด ๋์ผํ๋ค.
โข
2. 0๋ฒ์งธ ๊ฐ์ด k๋ณด๋ค ์ปค์ ธ์ผ ํ๋ค.
โข
4. ๋ค์์ด์ ์์์ด ํ๋๋จ์๋๋ฐ๋ K๋ณด๋ค ์๋ค๋ฉด -1์ ๋ฐํํ๋ค.
์ฌ๊ธฐ์ ๊ฐ๋จํ ArrayList๋ก ํ ์ ์์ง ์์๊น? ํด์ ์๋ ์ฒ๋ผ ์ ๊ทผํ๋ค.
[Algorithm] ๋ ๋งต๊ฒ(Heap)
๋ฌธ์ ํด์
โข
์์๋ก ์ ๊ณต๋ ์์์ ์ดํด๋ณด๋ฉด {{0, 3}, {1, 9}, {2, 6}} ๊ฐ ์ ๋ ฅ๋ ๊ฒ์ธ๋ฐ ์ด ์์ ์ด ์ด๋ป๊ฒ ์ ๋ ฌ๋์ผ ๊ฐ์ฅ ๋น ๋ฅผ์ง๋ฅผ ๊ฒฐ์ ์ง๋ ๋ฌธ์ ์ด๋ค.
โข
์ด๊ฒ์ ๊ฐ ์์ ์ ์์ฒญ๋ถํฐ ์ข ๋ฃ๊น์ง ๊ฑธ๋ฆฐ ์๊ฐ์ ํ๊ท ์ ๊ฐ์ฅ ์ค์ด๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๋ชฉํ
โข
SJF(Shortest Job First) ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ
โข
์ด๋ PriorityQueue๋ก ์ฐ์ ์์ ํ๊ฐ ์ฌ์ฉ๋๋ค.
โข
processQueue๋ผ๋ ๋ณ์๋ช ์ผ๋ก PriorityQueue๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ์์ ์ ๋ฃ๋๋ฐ, ์ฐ์ ์์ ํ๋ฅผ ํตํด jobs[i][j]์์ j=1์ ๊ฐ๋ค์ ๋ฐ๋ผ์ ์์๊ฐ๋ค์ด ์ ๋ฆฌํ๊ฒ์ผ๋ก ๋ณด์ฌ์ก๋ค.
โข
๋ฐ๋ผ์ ๊ฐ ์์ ์ 1์ธ๋ฑ์ค(๋๋ฒ์งธ๊ฐ)์ด ์์์์๋ก ์ ๋ ฌ๋ ํ์๊ฐ ์์๋ค.
[Algorithm] ๋์คํฌ ์ปจํธ๋กค๋ฌ(Heap)
๋ฌธ์ ํด์
โข
์ฐ์ ์ง๊ด์ ์ผ๋ก ๋ค๋ฆฌ์ ์ฐจ๋ค์ด ์ผ๋ ฌ๋ก ์ง๋๊ฐ๋ ๋ชจ์ต์ด ๊ทธ๋ ค์ง๋ฉด์
FIFO(First In First Out)์ ์๋ฃ๊ตฌ์กฐ
๊ฐ ํ์ํ๋ค๊ณ ํ๋จ๋์๋ค.
โข
ํ์ง๋ง ์๊ฐ๋ณด๋ค ๋จ์ํด ๋ณด์ด๋ ๋ฌธ์ ์ง๋ง, ๋ก์ง์ ์ค์ ๋ก ๊ตฌ์ฑ ํ ๋๋ ๋๋ฌด ๋ณต์กํ๋ค. ์๊ฐ๊ณผ ์ฝ๋๊ฐ ๋ฐ๋ก ๋ ธ๋ ๋๋์ด ๋ง์๋ค.
โข
๋ฌธ์ ๊ฐ ํผ๋์ ์ฃผ์๋ ๋ถ๋ถ์ ๊ณ์ํด์ ๋ฌธ์ ๋ฅผ ์ฝ๋ค๋ณด๋ ๋ค๋ฆฌ์ ๊ธธ์ด = ๊ฒฝ๊ณผ ์๊ฐ ์ธ๊ฒ์ ์๊ฒ ๋์๋ค.
โข
์๊ฐ๋ณด๋ค ํ๋ก์ธ์ค๋ ์ฝํ์ง๋ง ์ฝ๋๊ฐ ๊ธธ์ด์ ์ ์ ์ด ์๋ค. ์ด๋ฐ๊ฒ์ ์ ์ ๋ฆฌํ๋๊ฒ์ ์ต์ํด์ง๊ณ ์ถ๋ค.
โข
์ฐ์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ๋ด๊ฐ ์๊ฐํ๋ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
โข
์ด๊ฒ ์๊ฐ์ ์ ๋ฆฌ๊ฐ ๋๋๊ฒ ๊ฐ์ง๋ง ์ฝ๋๋ก ์ฎ๊ธฐ๋๊ฒ์ด ์๊ฐ๋ณด๋ค ์ฝ์ง๋ ์์๋ค.
[Algorithm] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ(Queue)
๋ฌธ์ ํด์
โข
์ฒ์ ๋ฌธ์ ๋ฅผ ๋ดค์๋ ํต์ฌ์ ์ค๋ณต์ ๊ฑฐ๋ก ๋ณด์๋ค.
โข
ํ์ง๋ง HashSet์ ๋ชจ๋ ์ค๋ณต์ ์ ๊ฑฐํด๋ฒ๋ฆฐ๋ค. ๋ด๊ฐ์ํ๋ ๊ฒฐ๊ณผ์ ๋ฌ๋๋ค.
โข
๋ฌธ์ ์ ์๋์์๋
โข
๋ฐ๋ผ์ ํด๋น ๋ฌธ์ ๋ ์คํ(Stack) ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํ๊ณ ์กฐ๊ฑด๋ฌธ์ ํตํด์ ์ค๋ณต๋๋ ๊ฒ์ ํ๋ ค ๋ณด๋ธ๋ค๋ฉด ํ์ด๊ฐ ๋ ๊ฒ์ผ๋ก ํ๋จ๋์๋ค
๋ฌธ์ ํ์ด
[Algorithm] ๊ฐ์ ์ซ์๋ ์ซ์ด(Stack)
Stack?
Stack์ด๋?
"์คํ์ ์๋๋ค" ๋ผ๋ ํํ์ ์ค์ํ์์๋ ๊ฐ๊ฐํ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ํ์๋ ๋ค๋ฅด๊ฒ ๊ทธ๋๋ง ๊ธฐ์ตํ๊ธฐ๊ฐ ํธํ ๊ฒ ๊ฐ์ต๋๋ค.
์๋ฃ๊ตฌ์กฐ์ ์ผ์ข ์ผ๋ก์ ํ(Queue)์๋ ๋ค๋ฅด๊ฒ ํ์ ์ ์ถ์ ํ์์ ๋๋ค. - LIFO(Last In First Out)๋์ค์ ๋ค์ด์ค๋ ๊ฐ์ด ๊ฐ์ฅ ๋จผ์ ๋๊ฐ๋ ๊ฒ์ผ๋ก,ํ์๋ ๋ค๋ฅด๊ฒ Index์ ๊ฐ๋ ์ด ์กด์ฌํฉ๋๋ค.
Java Development Kit Version 17 API Specification
declaration: module: java.base, package: java.util, class: Stack
Stack์ ์ ์ธ ๋ฐฉ๋ฒ
[์๋ฃ๊ตฌ์กฐ] ์คํ(Stack)์ด๋?
Queue?
Queue๋?
์๋ฃ๊ตฌ์กฐ์ ์ผ์ข ์ผ๋ก์ ๋ฆฌ์คํธ์ฑ์ ์๋ฃ๋ ๋์ด๋๋ ์๋ฃ, ์ํ์ ์ธ ์๋ฃ, ๋๊ธฐ์ด ๋ฑ์ ์ฌ์ฉ๋ฉ๋๋ค.
Queue๋ ์ ์ ์ ์ถ์ ํ์์ด๋ฉฐ, "๋จผ์ ๋ค์ด์จ ๋์ด ๋จผ์ ๋๊ฐ๋ค" ๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.FIFO(First In First Out) ์ด๋ฐ ์์ผ๋ก ํํํ๊ธฐ๋ ํฉ๋๋ค.
Queue๋ ํน์ดํ๊ฒย
contains() ํจ์
๋ฅผ ํตํด ์ด๋ ํ ๊ฐ์ด ํฌํจ๋์ด์๋์ง๋ ํ์ธํ ์ ์์ง๋ง Index์ ๊ฐ๋ ์ด ์์ด์ ์ด๋ ํ ๊ฐ์ด ๋ช ๋ฒ์งธ์ ์๋์ง๋ ์ ์ ์์ต๋๋ค.
Java Development Kit Version 17 API Specification
declaration: module: java.base, package: java.util, interface: Queue
Queue์ ์ ์ธ ๋ฐฉ๋ฒ
[์๋ฃ๊ตฌ์กฐ] ํ(Queue)๋?
๋ฌธ์ ํด์
์ฐธ๊ฐ์๋ ์์ฃผ์๋ณด๋ค -1 ์์๊ฒ์ด๋ผ๋ ๊ฒ์์ ์ด๊ฑด ๋ฌด์กฐ๊ฑด ํฐ๊ฒ์์ ์์๊ฒ์ ๋นผ๋ค๋ณด๋ฉด ๋จ๋๊ฒ์ ์ถ๋ ฅํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๊ฒ์ผ๋ก ๊ณง๋ฐ๋ก ์๊ฐ์ด ๋์๋ค.
์ด์ ๋ฌธ์ ์์ ํด์๋งต์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํด์๋งต์ ๊ฐ ๋ฐฐ์ด ์์๋ค์ ์ ์ฅํด์, ํฐ ๋งต์์ ์์ ๋งต์ ์์๋ค์ ํ๋์ฉ ๊ฒ์ํด์ ๋นผ๊ธฐ๋ก ํ๋ค.
๋ฌธ์ ํ์ด
์ฒ์์ ๋๋ช ์ด์ธ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํด์ผ ํ ์ง ์ ๋งคํ๋ค. ๋ค๋ฅธ ํ์ด๋ฅผ ์ฐธ๊ณ ํ๋ฉด์ Map์ ๋ฉ์๋ ์ค
getOrDefault()
๋ผ๋ ๋ฉ์๋๋ฅผ ํ์ธํ๊ฒ ๋์๋ค.
ํค๊ฐ ์กด์ฌํ๋ค๋ฉด ์ฐพ๋ ํค์ ๊ฐ์ ๋ฐํํ๊ณ ์๋ค๋ฉด ๊ธฐ๋ณธ ๊ฐ์ ๋ฐํํ๋ ๋ฉ์๋๋ก
[Algorithm] ์์ฃผํ์ง ๋ชปํ ์ ์(ํด์๋งต - ๋์ผ๊ฐ ๋น๊ต, ๋์ผํ ๊ฐ์ ๋ํ ๋ฌธ์ )
Load more