-
๊ณต๋ถํ ๋ด์ฉ์ readme ํ์ผ์ ์ ๋ฆฌํฉ๋๋ค.
-
๋ฌธ์ ๋ฅผ ํผ ๋ ์ง, ๋ฌธ์ ์ถ์ฒ, ๋ฌธ์ ๋ฒํธ์ ํจ๊ป ์ปค๋ฐํฉ๋๋ค.
-
์ดํ์ ์์ ํ ๋ฌธ์ ๋ Fix๋ฅผ ๋ถ์ฌ ํ์ํฉ๋๋ค.
String๊ณผ int ๋ฐฐ์ด์ ์ฝ๊ฒ ์ ๋ ฌ ๊ฐ๋ฅ
๊ธฐ๋ณธ์ ์ผ๋ก Comparable ๊ตฌํ์ ์ํด ์ ๋ ฌ๋ ๊ฒ
** Comparable์ ์ ๋ ฌ ๊ธฐ์ค์ด ๋๋ ๋ฉ์๋๋ฅผ ์ ์ํ๋ ์ธํฐํ์ด์ค๋ก ํด๋น ์ธํฐํ์ด์ค์์ compareTo() ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ์ฌ ๊ตฌํํจ
=> Arrays.sort()๋ฅผ ์คํํ๋ฉด Comparable ์ธํฐํ์ด์ค ๋ด๋ถ์ compartTo ๋ฉ์๋๋ฅผ ์คํํ์ฌ ์ ๋ ฌํ๋ ๊ฒ๊ณผ ๊ฐ๋ค
โญ๏ธ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
default ๊ฐ์ด๊ธฐ ๋๋ฌธ์ Arrays.sort()๋ก ์ฌ์ฉํจ
โญ๏ธ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ค๋ฉด sort()์ ์ธ์์ ์ถ๊ฐ๋ก Collections.reverseOrder()๋ฅผ ์ ๋ฌํด์ผํจ.
ex) Arrays.sort(array, Collections.reverseOrder());
์ด๋ ์ธํฐํ์ด์ค ๋ด๋ถ์ compareTo ๋ฉ์๋๋ฅผ ์ค๋ฒ๋ผ์ด๋ฉํ๋ ๊ฒ๊ณผ ๊ฐ๋ค
๋ฐฐ์ด๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํํ๋ฉฐ 0๋ถํฐ ์ธ๋ฑ์ค๋ฅผ ์์ํ์ง๋ง, ๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ๊ฐ๋ณ์ ์ด๋ฏ๋ก ํ์ฉ๋๊ฐ ๋์
๊ธฐ๋ฅ | ํจ์๋ช |
---|---|
๊ฐ ์ถ๊ฐ | .add() |
๊ฐ ์ ๊ฑฐ | .remove() |
๊ฐ ์กด์ฌ ํ์ธ | .contains() |
๊ธธ์ด | .size() |
โ 2์ฐจ์ arraylist๋ฅผ ์์ฑํ๋ ค๋ฉด ๊ฐ๊ฐ์ ๋ฐฐ์ด[index]๋ฅผ ArrayList๋ก ์ ์ธํด์ฃผ๋ฉด ๋จ
ex) ArrayList[] arr = new ArrayList<>[N];
์ฌ๋ฌ ๋ ธ๋๊ฐ ์์ ๋ ํน์ 2๊ฐ์ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํด 1๊ฐ์ ์งํฉ์ผ๋ก ๋ฌถ๋ union ์ฐ์ฐ๊ณผ ๋ ๋ ธ๋๊ฐ ๊ฐ์ ์งํฉ์ ์ํด ์๋์ง๋ฅผ ํ์ธํ๋ find ์ฐ์ฐ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ ์๊ณ ๋ฆฌ์ฆ
โ ํต์ฌ ์ด๋ก ์ union, find ์ฐ์ฐ!
union ์ฐ์ฐ : ๊ฐ ๋ ธ๋๊ฐ ์ํ ์งํฉ์ 1๊ฐ๋ก ํฉ์น๋ ์ฐ์ฐ, ๋ ธ๋ a,b๊ฐ ๊ฐ๊ฐ A, B ์งํฉ์ ์ํด ์์ ๋ union(a,b)๋ A์ B์ ํฉ์งํฉ์ ๋งํจ
find ์ฐ์ฐ : ํน์ ๋ ธ๋ a์ ๊ดํด a๊ฐ ์ํ ์งํฉ์ ๋ํ ๋ ธ๋๋ฅผ ๋ฐํํ๋ ์ฐ์ฐ, ๋ ธ๋ a๊ฐ A์ ์งํฉ์ผ ๋, find(a)๋ A์งํฉ์ ๋ํ ๋ ธ๋๋ฅผ ๋ฐํํจ
โ ๊ตฌํ ๋ฐฉ๋ฒ
- 1์ฐจ์ ๋ฐฐ์ด ์ด์ฉ, ๋ ธ๋๊ฐ ์ฐ๊ฒฐ๋์ด ์์ง ์์ผ๋ฏ๋ก ๊ฐ ๋ ธ๋๊ฐ ๋ํ ๋ ธ๋๊ฐ ๋จ ๊ฐ ๋ ธ๋๊ฐ ๋ชจ๋ ๋ํ ๋ ธ๋์ด๋ฏ๋ก ๋ฐฐ์ด์ ์์ ์ ์ธ๋ฑ์ค ๊ฐ์ผ๋ก ์ด๊ธฐํ
- 2๊ฐ์ ๋ ธ๋๋ฅผ ์ ํํด ๊ฐ๊ฐ์ ๋ํ ๋ ธ๋๋ฅผ ์ฐพ์ ์ฐ๊ฒฐํ๋ union ์ฐ์ฐ์ ์ํ, (1,4),(5,6)์ ์ฐ๊ฒฐํด๋ณด์ โ 1์ ๋ํ๋ ธ๋, 4๋ ์์๋ ธ๋๊ฐ ๋จ ๋ฐฐ์ด ์ธ๋ฑ์ค 4์ ๊ฐ์ ๋ํ๋ ธ๋์ธ 1๋ก ์์ โ 5๊ฐ ๋ํ๋ ธ๋, 6์ ์์ ๋ ธ๋๊ฐ ๋๋ฉด ๋ฐฐ์ด[6]์ ๊ฐ์ 5๋ก ์์ โ (4,6)์ union ์ฐ์ฐํด๋ณด๋ฉด ์ด๋ป๊ฒ ๋ ๊น? โ ๊ฐ์ ๋ํ ๋ ธ๋๊ฐ ์๋๋ฏ๋ก ๊ฐ ๋ ธ๋์ ๋ํ ๋ ธ๋๋ฅผ ์ฐพ์ ์ฌ๋ผ๊ฐ ๋ค์ ๊ทธ ๋ํ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํจ
- find ์ฐ์ฐ์ ์์ ์ด ์ํ ์งํฉ์ ๋ํ ๋ ธ๋๋ฅผ ์ฐพ๋ ์ฐ์ฐ, ๋จ์ํ ๋ํ ๋ ธ๋๋ฅผ ์ฐพ๋ ์ญํ ๋ง ํ๋ ๊ฒ์ด ์๋๋ผ ๊ทธ๋ํ๋ฅผ ์ ๋ํ๊ณ ์๊ฐ ๋ณต์ก๋๋ฅผ ํฅ์์ํด โ ๋์ ๋ ธ๋ ๋ฐฐ์ด์ index ๊ฐ๊ณผ value ๊ฐ์ด ๋์ผํ์ง ํ์ธ โ ๋์ผํ์ง ์์ผ๋ฉด value ๊ฐ์ด ๊ฐ๋ฆฌํค๋ index ์์น๋ก ์ด๋ โ ์ด๋ ์์น์ index๊ฐ๊ณผ value ๊ฐ์ด ๊ฐ์ ๋๊น์ง ์์ ๊ณผ์ ์ ๋ฐ๋ณต(์ฌ๊ทํจ์๋ก ๊ตฌํ) โ ๋ํ ๋ ธ๋์ ๋๋ฌํ๋ฉด ์ฌ๊ทํจ์๋ฅผ ๋น ์ ธ๋์ค๋ฉด์ ๊ฑฐ์น๋ ๋ชจ๋ ๋ ธ๋ ๊ฐ์ ๋ฃจํธ ๋ ธ๋๊ฐ์ผ๋ก ๋ณ๊ฒฝ
- ์ฐ์ฐ์ ํ ๋ ๊ฑฐ์น๋ ๋ ธ๋๋ค์ด ๋ํ ๋ ธ๋์ ๋ฐ๋ก ์ฐ๊ฒฐ๋๋ ํํ๋ก ๋ณ๊ฒฝ๋จ, ์ถํ ๋ ธ๋์ ๊ด๋ จ๋ find ์ฐ์ฐ ์๋๊ฐ o(1)๋ก ๋ณ๊ฒฝ๋จ โ ๊ฒฝ๋ก ์์ถ์ ํจ๊ณผ arr[1].add(new Node());
โญ๏ธ ์ ๋ ฌ ๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ Collections.sort()๋ฅผ ์ฌ์ฉํ๋ฉด ๋จ
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ผ์ข ์ผ๋ก, ์ฌ์ดํด์ด ์๋ ๋ฐฉํฅ ๊ทธ๋ํ์์ ๋ ธ๋ ์์๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ
์์๊ฐ ์ ํด์ ธ ์๋ ์ผ๋ จ์ ์์ ์ ์ฐจ๋ก๋๋ก ์ํํด์ผ ํ ๋ ์ฌ์ฉํ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ
โ ์ฌ์ดํด์ด ์๋ ๋ฐฉํฅ๊ทธ๋ํ์์ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉํฅ์ฑ์ ๊ฑฐ์ค๋ฅด์ง ์๋๋ก ์์๋๋ก ๋์ดํ๋ ๊ฒ
์ฌ์ดํด์ด ์กด์ฌํ๋ฉด ๋ ธ๋ ๊ฐ์ ์์๋ฅผ ๋ช ํํ๊ฒ ์ ์ ๋ถ๊ฐ, ์์ ์ ๋ ฌ์ ์ฌ๋ฌ๊ฐ์ง ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง ์ ์์
<์ง์ ์ฐจ์>
ํน์ ํ ๋ ธ๋๋ก ๋ค์ด์ค๋ ๊ฐ์ ์ ๊ฐ์
<์ง์ถ์ฐจ์>
ํน์ ํ ๋ ธ๋์์ ๋๊ฐ๋ ๊ฐ์ ์ ๊ฐ์
์์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์์
์ง์ ์ฐจ์๊ฐ 0์ธ ๋ ธ๋๋ฅผ ํ์ ๋ฃ๋๋ค.
ํ๊ฐ ๋น ๋๊น์ง ๋ค์์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. โ ํ์์ ์์๋ฅผ ๊บผ๋ด ํด๋น ๋ ธ๋์์ ๋๊ฐ๋ ๊ฐ์ ์ ๊ทธ๋ํ์์ ์ ๊ฑฐ, ์ง์ ์ฐจ์ ๋ฐฐ์ด์์ ํด๋น ๊ฐ์ ์ด ๊ฐ๋ฆฌํค๊ณ ์๋ ๋ ธ๋๋ค์ ์ง์ ์ฐจ์๋ฅผ 1์ฉ ๋บ โก ์๋กญ๊ฒ ์ง์ ์ฐจ์๊ฐ 0์ด ๋ ๋ ธ๋๋ฅผ ํ์ ์ฝ์
๊ทธ๋ํ์์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ, ์์ง๋ ๋ชจ๋ ์์๋ผ๋ ํน์ง์ ๊ฐ์ง
ํน์ ๋ ธ๋์์ ๋ค๋ฅธ ๋ ธ๋๋ค์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๋ฌธ์
- ์ธ์ ๋ฆฌ์คํธ๋ก ๊ทธ๋ํ ๊ตฌํํ๊ธฐ ์ธ์ ๋ฆฌ์คํธ์ ์ฐ๊ฒฐํ ๋ฐฐ์ด์ ์๋ฃํ์ (๋ ธ๋, ๊ฐ์ค์น)์ ๊ฐ์ ํํ๋ก ์ ์ธํ์ฌ ์ฐ๊ฒฐ
- ์ต๋จ ๊ฑฐ๋ฆฌ ๋ฐฐ์ด ์ด๊ธฐํํ๊ธฐ ์ต๋จ ๊ฑฐ๋ฆฌ ๋ฐฐ์ด์ ๋ง๋ค๊ณ ์ถ๋ฐ ๋ ธ๋๋ 0, ์ด์ธ์ ๋ ธ๋๋ ๋ฌดํ์ผ๋ก ์ด๊ธฐํ, ๋ฌดํ์ ์ ๋นํ ํฐ ๊ฐ์ ์ฌ์ฉํ๋ฉด ๋จ
- ๊ฐ์ด ๊ฐ์ฅ ์์ ๋ ธ๋ ๊ณ ๋ฅด๊ธฐ ์ต๋จ ๊ฑฐ๋ฆฌ ๋ฐฐ์ด์์ ํ์ฌ ๊ฐ์ด ๊ฐ์ฅ ์์ ๋ ธ๋๋ฅผ ๊ณ ๋ฆ, ์ฌ๊ธฐ์๋ ๊ฐ์ด 0์ธ ์ถ๋ฐ ๋ ธ๋์์ ์์ํ๋ฉด ๋จ
- ์ต๋จ ๊ฑฐ๋ฆฌ ๋ฐฐ์ด ์ ๋ฐ์ดํธํ๊ธฐ ์ ํ๋ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ์์ง์ ๊ฐ์ ๋ฐํ์ผ๋ก ๋ค๋ฅธ ๋ ธ๋์ ๊ฐ์ ์ ๋ฐ์ดํธ 1๋จ๊ณ์์ ์ ์ฅํด ๋์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด ํ์ฌ ์ ํ๋ ๋ ธ๋์ ์์ง๋ค์ ํ์ํ๊ณ ์ ๋ฐ์ดํธํ๋ฉด ๋จ ์ฐ๊ฒฐ ๋ ธ๋์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ ์ค ๋ ์์ ๊ฐ์ผ๋ก ์ ๋ฐ์ดํธ โ ์ต๋จ ๊ฑฐ๋ฆฌ ์ ๋ฐ์ดํธ ๋ฐฉ๋ฒ : Min(์ ํ ๋ ธ๋์ ์ต๋จ ๊ฑฐ๋ฆฌ ๋ฐฐ์ด์ ๊ฐ + ์์ง ๊ฐ์ค์น, ์ฐ๊ฒฐ ๋ ธ๋์ ์ต๋จ ๊ฑฐ๋ฆฌ ๋ฐฐ์ด์ ๊ฐ)
- ๊ณผ์ 3, 4๋ฅผ ๋ฐ๋ณตํด ์ต๋จ ๊ฑฐ๋ฆฌ ๋ฐฐ์ด ์์ฑํ๊ธฐ ๋ชจ๋ ๋ ธ๋๊ฐ ์ฒ๋ฆฌ๋ ๋๊น์ง ๊ณผ์ 3~4 ๋ฐ๋ณต, ๊ณผ์ 4์์ ์ ํ ๋ ธ๋๊ฐ ๋ ๋๋ง๋ค ๋ค์ ์ ํ๋์ง ์๋๋ก ๋ฐฉ๋ฌธ๋ฐฐ์ด์ ๋ง๋ค์ด ์ฒ๋ฆฌ, ๋ชจ๋ ๋ ธ๋๊ฐ ์ ํ๋ ๋๊น์ง ๋ฐ๋ณตํ๋ฉด ์ต๋จ ๊ฑฐ๋ฆฌ ๋ฐฐ์ด์ด ์์ฑ๋จ
โ ์์ฑ๋ ์ต๋จ ๊ฑฐ๋ฆฌ ๋ฐฐ์ด์ ์ถ๋ฐ ๋ ธ๋์ ์ด์ธ์ ๋ชจ๋ ๋ ธ๋ ๊ฐ์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ํํํจ
๊ด๋ จ ๋ฌธ์ ๋ณด๊ธฐ : (ํ ์๋ฃ๊ตฌ์กฐ์ ํน์ฑ์ ๊ณ ๋ ค + ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๋ฐฉ์ ๋์ )
๊ด๋ จ ๋ฌธ์ ๋ณด๊ธฐ : HashMap Value ์ ๋ ฌ ๋ฐฉ์ ์ฐธ๊ณ
๊ด๋ จ ๋ฌธ์ ๋ณด๊ธฐ : HahsMap KeySet ํ์ฉ
๊ด๋ จ ๋ฌธ์ ๋ณด๊ธฐ : +) HashSet ํ์ฉ