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 ์ ์ธ
์๋ฐ์์ ์ฐ์ ์์ ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด java.util.PriorityQueue ๋ฅผ import ํ๊ณ Queue<Element> queue = new Queue<>()์ ๊ฐ์ ํ์์ผ๋ก ์ ์ธํ๋ฉด ๋ฉ๋๋ค. ๊ธฐ๋ณธ์ ์ฐ์ ์์๊ฐ ๋ฎ์ ์ซ์๊ฐ ๋ถ์ฌ๋๊ณ ๋ง์ฝ ๋์ ์ซ์๊ฐ ์ฐ์ ์์๊ฐ ๋๊ฒ ํ๊ณ ์ถ๋ค๋ฉด ์ ์ธ ์ Collections.reverseOrder() ๋ฉ์๋๋ฅผ ํ์ฉํฉ๋๋ค.
Priority Queue ๊ฐ ์ถ๊ฐ
์๋ฐ์ ์ฐ์ ์์ ํ์ ๊ฐ์ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด
add(value)
๋๋
offer(value)
๋ผ๋ ๋ฉ์๋๋ฅผ ํ์ฉํ๋ฉด ๋ฉ๋๋ค.
add(value) ๋ฉ์๋์ ๊ฒฝ์ฐ ๋ง์ฝ ์ฝ์ ์ ์ฑ๊ณตํ๋ฉด true๋ฅผ ๋ฐํํ๊ณ , ํ์ ์ฌ์ ๊ณต๊ฐ์ด ์์ด ์ฝ์ ์ ์คํจํ๋ฉด IllegalStateException์ ๋ฐ์์ํต๋๋ค. ์ด๋ Queue์ ๋์ผํฉ๋๋ค.
[์๋ฃ๊ตฌ์กฐ] ์ฐ์ ์์ ํ(Priority Queue)๋?
๋ฌธ์ ํด์
์ฐ์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ๋ ํ์ด ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
โข
1.
์ ๋ ฌ์ด ๋์ผํ๋ค.
โข
2. 0๋ฒ์งธ ๊ฐ์ด k๋ณด๋ค ์ปค์ ธ์ผ ํ๋ค.
โข
4. ๋ค์์ด์ ์์์ด ํ๋๋จ์๋๋ฐ๋ K๋ณด๋ค ์๋ค๋ฉด -1์ ๋ฐํํ๋ค.
์ฌ๊ธฐ์ ๊ฐ๋จํ ArrayList๋ก ํ ์ ์์ง ์์๊น? ํด์ ์๋ ์ฒ๋ผ ์ ๊ทผํ๋ค.
โข
๋ฌธ์ ๋ ๋ด๊ฐ ์ํ๋ ๋ฐฉ์๋๋ก ํ์ด๋๋ ์ค ์์์ง๋ง ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
โข
๋๋ ๊ฐ์ฅ ์์๊ฐ, ๊ทธ ๋ค์๊ฐ์ ์ฐพ์๋ด๊ธฐ ์ํด์ ๋ฐ๋ณต๋ฌธ 1ํ๋ง๋ค ๊ณ์ํด์ ์ ๋ ฌํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๊ณ ์๋ค. ์ฌ๊ธฐ์ ํจ์จ์ฑ์ ๋ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ณ ์์๋ค.
โข
์ง๋ต ๊ฒ์ํ ๋ค์์๋ ๋์ ๋น์ทํ ์ฌ๋ก๊ฐ ์์์ผ๋ฉฐ ๋ต๋ณ์์ ๋งค๋ฒ ์ ๋ ฌ์ ์งํํ๋๊ฒ์ ์ฑ๋ฅ์ ์ด์๊ฐ ์์ ๊ฒ์ด๋ผ๋ ๋ต๋ณ์ ๋ณด๊ณ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ทผํด๋จ์ ์๊ฒ๋์๋ค.
โข
์ค์ํ๊ฒ์ ์ต์๊ฐ์ ์ถ์ถํ๋ ๊ฐ์ฅ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค. ๋ง์ฝ ์ ๋ ฌ๋์ง ์๋๋ค๋ฉด, ๋ ๋น๊ต ๊ฒ์์ ํตํด์ ๊ฐ์ฅ ์์๊ฐ์ ์ถ์ถํด์ผ ํ ํ ๋ฐ ๋นํจ์จ์ ์ผ ๊ฒ์ด๋ค.
โข
์ฌ๊ธฐ์ ChatGPT์ ๋์์ ํตํด ์ด๋ค ๋ฐฉ์์ด ์ต์๊ฐ์ ์ถ์ถํ๋๋ฐ ๊ฐ์ฅ ์ ํฉํ ์ง ์ฐพ์๋ณด๋ ๋ค์๊ณผ ๊ฐ์ ๋ต๋ณ์ ์ป์ ์ ์์๋ค.
๋งค๋ฒ ์ ๋ ฌํ๋ ๋ถ๋ถ์ด ํจ์จ์ฑ์ ์ํฅ์ ๋ฏธ์น๊ณ ์๋ค๋ฉด, ์ ๋ ฌ์ ์ต์ํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๋ ๊ฒ์ด ์ข์.
ArrayList
์์ ๊ฐ์ฅ ์์ ๊ฐ๊ณผ ๊ทธ ๋ค์ ๊ฐ์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋ฐ๊ฟ๋ณด์. ๋์ ์
PriorityQueue
๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์จ์ ์ผ๋ก ์ต์๊ฐ์ ์ถ์ถํ ์ ์์ด.
PriorityQueue
๋ ๋ด๋ถ์์ ํ(heap)์ ์ฌ์ฉํ์ฌ ์ต์๊ฐ์ ๋น ๋ฅด๊ฒ ์ถ์ถํ ์ ์๋๋ก ๋์์ค.
[Algorithm] ๋ ๋งต๊ฒ(Heap)
๋ฌธ์ ํด์
โข
์์๋ก ์ ๊ณต๋ ์์์ ์ดํด๋ณด๋ฉด {{0, 3}, {1, 9}, {2, 6}} ๊ฐ ์ ๋ ฅ๋ ๊ฒ์ธ๋ฐ ์ด ์์ ์ด ์ด๋ป๊ฒ ์ ๋ ฌ๋์ผ ๊ฐ์ฅ ๋น ๋ฅผ์ง๋ฅผ ๊ฒฐ์ ์ง๋ ๋ฌธ์ ์ด๋ค.
โข
์ด๊ฒ์ ๊ฐ ์์ ์ ์์ฒญ๋ถํฐ ์ข ๋ฃ๊น์ง ๊ฑธ๋ฆฐ ์๊ฐ์ ํ๊ท ์ ๊ฐ์ฅ ์ค์ด๋ ๋ฐฉ๋ฒ์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๋ชฉํ
โข
SJF(Shortest Job First) ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ
โข
์ด๋ PriorityQueue๋ก ์ฐ์ ์์ ํ๊ฐ ์ฌ์ฉ๋๋ค.
โข
processQueue๋ผ๋ ๋ณ์๋ช ์ผ๋ก PriorityQueue๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ์์ ์ ๋ฃ๋๋ฐ, ์ฐ์ ์์ ํ๋ฅผ ํตํด jobs[i][j]์์ j=1์ ๊ฐ๋ค์ ๋ฐ๋ผ์ ์์๊ฐ๋ค์ด ์ ๋ฆฌํ๊ฒ์ผ๋ก ๋ณด์ฌ์ก๋ค.
โข
๋ฐ๋ผ์ ๊ฐ ์์ ์ 1์ธ๋ฑ์ค(๋๋ฒ์งธ๊ฐ)์ด ์์์์๋ก ์ ๋ ฌ๋ ํ์๊ฐ ์์๋ค.
โข
[์๋ฃ๊ตฌ์กฐ] ์ฐ์ ์์ ํ(Priority Queue)๋?
๋ฌธ์ ํ์ด
โข
์ฐ์ ํ๋ก์ธ์ค ์์์ธ 0๋ฒ์งธ ์ธ๋ฑ์ค๋ณ๋ก ์ ๋ ฌํ๊ณ
โข
Arrays.sort(jobs, (a, b) -> a[0] - b[0])
์์
a[0] - b[0]
์ ์์ ์ ์์ฒญ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๋๋ก ํ๋ ๋ถ๋ถ์ ๋๋ค.
โข
๋ฐ๋ผ์ ๋ฐฐ์ด์ ์ฒ์์ {0, 3}, {1, 9}, {2, 6} ์์๋๋ก ์ ๋ ฌํ๊ณ ์ฐ์ ์์ ํ์ ์ ์ฅ๋ฉ๋๋ค.
โข
ํ์ ์ ์ฅ๋๊ณ ์๋ ์์ ๋ค์ ์ฐ์ ์์ ํ๋ ๋๋ฒ์งธ ์ธ๋ฑ์ค์ธ [1]์ ๋ฐ๋ผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ฉ๋๋ค.
[Algorithm] ๋์คํฌ ์ปจํธ๋กค๋ฌ(Heap)
๋ฌธ์ ํด์
โข
์ฐ์ ์ง๊ด์ ์ผ๋ก ๋ค๋ฆฌ์ ์ฐจ๋ค์ด ์ผ๋ ฌ๋ก ์ง๋๊ฐ๋ ๋ชจ์ต์ด ๊ทธ๋ ค์ง๋ฉด์
FIFO(First In First Out)์ ์๋ฃ๊ตฌ์กฐ
๊ฐ ํ์ํ๋ค๊ณ ํ๋จ๋์๋ค.
โข
ํ์ง๋ง ์๊ฐ๋ณด๋ค ๋จ์ํด ๋ณด์ด๋ ๋ฌธ์ ์ง๋ง, ๋ก์ง์ ์ค์ ๋ก ๊ตฌ์ฑ ํ ๋๋ ๋๋ฌด ๋ณต์กํ๋ค. ์๊ฐ๊ณผ ์ฝ๋๊ฐ ๋ฐ๋ก ๋ ธ๋ ๋๋์ด ๋ง์๋ค.
โข
๋ฌธ์ ๊ฐ ํผ๋์ ์ฃผ์๋ ๋ถ๋ถ์ ๊ณ์ํด์ ๋ฌธ์ ๋ฅผ ์ฝ๋ค๋ณด๋ ๋ค๋ฆฌ์ ๊ธธ์ด = ๊ฒฝ๊ณผ ์๊ฐ ์ธ๊ฒ์ ์๊ฒ ๋์๋ค.
โข
์๊ฐ๋ณด๋ค ํ๋ก์ธ์ค๋ ์ฝํ์ง๋ง ์ฝ๋๊ฐ ๊ธธ์ด์ ์ ์ ์ด ์๋ค. ์ด๋ฐ๊ฒ์ ์ ์ ๋ฆฌํ๋๊ฒ์ ์ต์ํด์ง๊ณ ์ถ๋ค.
โข
์ฐ์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ ๋ด๊ฐ ์๊ฐํ๋ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
โข
์ด๊ฒ ์๊ฐ์ ์ ๋ฆฌ๊ฐ ๋๋๊ฒ ๊ฐ์ง๋ง ์ฝ๋๋ก ์ฎ๊ธฐ๋๊ฒ์ด ์๊ฐ๋ณด๋ค ์ฝ์ง๋ ์์๋ค.
๋ฌธ์ ํ์ด
[Algorithm] ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ(Queue)
๋ฌธ์ ํด์
โข
์ฒ์ ๋ฌธ์ ๋ฅผ ๋ดค์๋ ํต์ฌ์ ์ค๋ณต์ ๊ฑฐ๋ก ๋ณด์๋ค.
โข
ํ์ง๋ง HashSet์ ๋ชจ๋ ์ค๋ณต์ ์ ๊ฑฐํด๋ฒ๋ฆฐ๋ค. ๋ด๊ฐ์ํ๋ ๊ฒฐ๊ณผ์ ๋ฌ๋๋ค.
โข
๋ฌธ์ ์ ์๋์์๋
โข
๋ฐ๋ผ์ ํด๋น ๋ฌธ์ ๋ ์คํ(Stack) ์๋ฃ๊ตฌ์กฐ๋ฅผ ํ์ฉํ๊ณ ์กฐ๊ฑด๋ฌธ์ ํตํด์ ์ค๋ณต๋๋ ๊ฒ์ ํ๋ ค ๋ณด๋ธ๋ค๋ฉด ํ์ด๊ฐ ๋ ๊ฒ์ผ๋ก ํ๋จ๋์๋ค
๋ฌธ์ ํ์ด
๋ฐฐ์ด์ ์์๋ค์ ์คํ ๊ฐ์ฒด์ ๋ณต์ฌํ๋ ์์ ์, ์ค๋ณต๊ฐ์ด ์๋ ๊ฒฝ์ฐ continue๋ฅผ ํตํด ๋ค์ ์์๋ก ๋์ด๊ฐ๋๋ก ์ค์ ํ๋ค.
ํ์ง๋ง ์ ๋ต์ ์ถ์ถํ ๋๋ ์คํ์ pop์ FILO์ธ ๊ฒ์ ๊ณ ๋ คํด์ผ ํ๋ค. ์ญ์์ผ๋ก ์ถ์ถ(pop)๋๊ธฐ ๋๋ฌธ์ ๊ทธ ์ญ์์ ๋ค์ ์ญ์์ผ๋ก ๋ฐ๊ฟ์ ์ถ์ถํ๋ฉด ์ํ๋ ๋ต์ ์ป์ ์ ์์๋ค.
[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<๊ฐ์ฒด> ๋ณ์๋ช = new Stack<๊ฐ์ฒด>();
ํ์๋ ๋ฌ๋ฆฌ Stack๋ง์ Importํ์ฌ ์ฌ์ฉํฉ๋๋ค.
Stack์ ๊ฐ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ(add์ push์ ์ฐจ์ด์ )
โข
Stack๋ณ์.push(๊ฐ);
โข
Stack๋ณ์.add(๊ฐ);2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ผ๋ฉฐ, ๊ณผ์ ์ ๋น์ทํ๋ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฆ ๋๋ค.
โข
add์ ๊ฒฝ์ฐ true๋ฅผ returnํ๊ณ ,
push๋ pushํ item์ returnํฉ๋๋ค.
[์๋ฃ๊ตฌ์กฐ] ์คํ(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<๊ฐ์ฒด> ๋ณ์๋ช = new LinkedList<๊ฐ์ฒด>();
โข
Queue์ LinkedList ์ ํธ์ ๋ชจ๋ importํด์ค์ผ ์ ์์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
Queue์ ๊ฐ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ(add์ offer์ ์ฐจ์ด์ )
โข
Queue๋ณ์.offer(๊ฐ);
โข
Queue๋ณ์.add(๊ฐ);์ด๋ ๊ฒ 2๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ผ๋ฉฐ, ๊ณผ์ ์ ๋น์ทํ๋ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฆ ๋๋ค.
[์๋ฃ๊ตฌ์กฐ] ํ(Queue)๋?
๋ฌธ์ ํด์
์ฐธ๊ฐ์๋ ์์ฃผ์๋ณด๋ค -1 ์์๊ฒ์ด๋ผ๋ ๊ฒ์์ ์ด๊ฑด ๋ฌด์กฐ๊ฑด ํฐ๊ฒ์์ ์์๊ฒ์ ๋นผ๋ค๋ณด๋ฉด ๋จ๋๊ฒ์ ์ถ๋ ฅํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ๊ฒ์ผ๋ก ๊ณง๋ฐ๋ก ์๊ฐ์ด ๋์๋ค.
์ด์ ๋ฌธ์ ์์ ํด์๋งต์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํด์๋งต์ ๊ฐ ๋ฐฐ์ด ์์๋ค์ ์ ์ฅํด์, ํฐ ๋งต์์ ์์ ๋งต์ ์์๋ค์ ํ๋์ฉ ๊ฒ์ํด์ ๋นผ๊ธฐ๋ก ํ๋ค.
๋ฌธ์ ํ์ด
์ฒ์์ ๋๋ช ์ด์ธ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํด์ผ ํ ์ง ์ ๋งคํ๋ค. ๋ค๋ฅธ ํ์ด๋ฅผ ์ฐธ๊ณ ํ๋ฉด์ Map์ ๋ฉ์๋ ์ค
getOrDefault()
๋ผ๋ ๋ฉ์๋๋ฅผ ํ์ธํ๊ฒ ๋์๋ค.
ํค๊ฐ ์กด์ฌํ๋ค๋ฉด ์ฐพ๋ ํค์ ๊ฐ์ ๋ฐํํ๊ณ ์๋ค๋ฉด ๊ธฐ๋ณธ ๊ฐ์ ๋ฐํํ๋ ๋ฉ์๋๋ก
getOrDefault(Object key, V DefaultValue)
๋ฐํ ๊ฐ : ์ฐพ๋ key๊ฐ ์กด์ฌํ๋ฉด ํด๋น key์ ๋งคํ๋์ด ์๋ ๊ฐ์ ๋ฐํํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉดย ๋ํดํธ ๊ฐ์ดย ๋ฐํ๋๋ ๊ฒ์ด๋ค.
ํ์ด์ฐ๋ฉด ๋์ผํ ์ด๋ฆ์ด ์์ผ๋ฉด value๊ฐ 1์ฆ๊ฐํ๊ฒ ๋๋๋ก ๋ ๊ฒ์ด๋ค.
์ฐธ๊ฐ์ ๋งต์ธ comMap์์ name์ ์ถ์ถํด์ ์์ฃผ์ parMap์์ ์กด์ฌํ์ง ์๋๊ฒ์ ์ฒดํฌํ๋ฉด์ ๊ทธ ์ด๋ฆ์ ๋ฐํํ๋ค.
๋ํ comMap.get(name) > parMap.get(name)๋ ๋๋ช ์ด์ธ์ธ ๊ฒฝ์ฐ์ ํน์ ์ฐธ๊ฐ์๊ฐ ๋์ผํ ์ด๋ฆ์ด 2๋ช ์ด๋ฉด 1, ์์ฃผ์๋ 0์ผ๋ก ๋ํ๋ ์ ์์ด์ ๊ทธ๋ฐ ๊ฒฝ์ฐ ๊ทธ ๋๋ช ์ด์ธ ์ฐธ๊ฐ์๊ฐ ์์ฃผํ์ง ๋ชปํ์ ๊ฒ์ ์ฒดํฌํ๋ ๋ถ๋ถ์ด๋ค.
๋๋ช ์ด์ธ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ํด์ผ ํ ์ง ๋ฐ๋ก ์๊ฐ๋์ง ์์ ๊ฒ ๊ฐ๋ค. ์ฌ๋ฌ ์ฐ์ต์ ํด๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
[Algorithm] ์์ฃผํ์ง ๋ชปํ ์ ์(ํด์๋งต - ๋์ผ๊ฐ ๋น๊ต, ๋์ผํ ๊ฐ์ ๋ํ ๋ฌธ์ )
Load more