๐
- ์ ๋ ฌ๋ ๋ฐฐ์ด ์ํ์ ์ด๋ถ ๊ฒ์(Binary Search) ๊ณ ๋ คํ๊ธฐ
/**
* Collections.binarySearch ๋ฅผ ํ์ฉํ๋ฉด ์ด๋ถํ์์ ์์ฃผ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค.
*/
// ์์๊ฐ ์์นํ๊ณ ์๋ ์ธ๋ฑ์ค๋ฅผ ๋ฆฌํดํ๋ค.
int index = collections.binarySearch(list, cur);
// ํด๋น์์๊ฐ ๋ฆฌ์คํธ์ ์๋ค๋ฉด, ๋ค์ด๊ฐ์ผ ํ ์๋ฆฌ๋ฅผ ๋ฆฌํดํ๋ค. ์ด๋ index๊ฐ 3์ด๋ผ๋ฉด, (-3-1)์ ๋ฆฌํดํ๋ค.
if (index < 0) {
index = Math.abs(index + 1);
}
// ์ฐพ์๋ธ index์ ์์๋ฅผ ์ฝ์
ํ๋ค.
list.add(index, cur);
- ๋ฌด์ธ๊ฐ ์ฐ๊ฒฐํด์ผ ํ๋ค๋ฉด ๋ฆฌ์คํธ ๊ณ ๋ คํ๊ธฐ
- ์์ ๋ง์ถฐ์ผ ํ๋ ์ฐ์ฐ์, ์์์ด ์๋ค๋ฉด ์คํ ๊ณ ๋ คํ๊ธฐ
- ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ค๋ฃฌ๋ค๋ฉด ํฌํฌ์ธํฐ ๊ณ ๋ คํ๊ธฐ
- ๋ฐฐ์ด์์ ํน์ ๊ตฌ๊ฐ์ฉ ๋ค๋ฃฐ๋, ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๊ณ ๋ คํ๊ธฐ
- ๋ฐฐ์ด์์ ๋ฒ์๊ฐ ์ด๋์ ๋ ์ ํด์ง ์ ๋ต์ ๊ตฌํด์ผ ํ ๋, ๊ฒฐ์ ์๊ณ ๋ฆฌ์ฆ ๊ณ ๋ คํ๊ธฐ
- ์์์ ๊ด๋ จ๋ ๋ฌธ์ ๋ผ๋ฉด ์๋ผํ ์คํ ๋ค์ค์ ์ฒด ์ด์ฉํ๊ธฐ
- ๋ฐฐ์ด์ ์ค๋ณต์ ์ ๊ฑฐํด์ผ ํ๋ ๋ฌธ์ ๋ผ๋ฉด HashMap ์ด๋ HashSet ์ด์ฉํ๊ธฐ
- ์ต์๊ณต๋ฐฐ์์ ๊ด๋ จ๋ ๋ฌธ์ ๋ผ๋ฉด GCD(Greate Common Devisior) ์ด์ฉํ๊ธฐ
- ๋ถํ์ํ๊ฒ ๋ฐ๋ณต ํธ์ถ๋๋ ์ฌ๊ท (์๋ฅผ๋ค๋ฉด ํผ๋ณด๋์น, ์กฐํฉ, ๋ฑ)๋ ๋ฉ๋ชจ์ด์ ์ด์ ์ ํตํด ์๊ฐ๋ณต์ก๋๋ฅผ ์ค์ผ ์ ์๋ค.
- 2์ฐจ์, 3์ฐจ์ ๋ฐฐ์ด๋ก ์ฃผ์ด์ง ๊ทธ๋ํ์ ํ์ ๋ฌธ์ ๋ ๊ฑฐ๋ฆฌ ์ ๋ณด๋ฅผ ๋ด์ dx, dy ๋ฐฐ์ด ์ด์ฉํ๊ธฐ
- BFS, DFS ๊ตฌํ์ check ๋ฐฐ์ด์ ๋ฒ์๋ฅผ ์ด๊ณผํด ๋ฐ์ํ๋ NullPointerException ์ฃผ์.
- ์ฌ๋ฌ ๊ฐ์ ์์์์ด ์ฃผ์ด์ง๋ ๋ฌธ์ ๋ผ๋ฉด, ํ ์ข ๋ฅ๋ฅผ ์ ๋ ฌ ํ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ ์ ์์์ง ๊ณ ๋ คํ๊ธฐ
- ๋ฐฐ์ด์ ์ต์๊ฐ์ด๋ ์ต๋๊ฐ์ ์ด์ฉํด์ผ ํ๋๋ฐ ์๊ฐ ๋ณต์ก๋๋ฅผ O(logn)์ผ๋ก ์ค์ฌ์ผ ํ๋ค๋ฉด PrioriryQueue ์ด์ฉํ๊ธฐ
- ๊ฐ์ค์น ๊ทธ๋ํ์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ๋ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ ๊ณ ๋ คํ๊ธฐ
- ์๋ก์์ธ ์งํฉ์ธ์ง ์๋์ง ํ์ธํด์ผ ํ๋ค๋ฉด Union & Find ์๊ณ ๋ฆฌ์ฆ ์ด์ฉํ๊ธฐ
- ์ต์ํ์ ๊ฐ์ ๊ฐฏ์, ๊ฐ์ค์น๋ก ๋ชจ๋ ๋ ธ๋๊ฐ ์ฐ๊ฒฐ๋๊ฒ ๋ง๋ค์ด์ผ ํ๋ค๋ฉด ํฌ๋ฃจ์ค์นผ์ด๋ ํ๋ฆผ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉํ๊ธฐ