๊ณจ๋ 4
int[][] grid
grid[y][x] = 2
์ฒ๋ฆฌํ๋ค. LinkedList<int[]> snake
snake.size()-1
๋ฒ์งธ ๊ฐ์ ๋จธ๋ฆฌ์ ์ขํ์ ํด๋นํ๋คgrid[tailY][tailX]=0
์ ์ฒ๋ฆฌํ๊ณ , ์ด ๋งํฌ๋๋ฆฌ์คํธ์ ๋ํด removeFirst
๋ฅผ ์ํํด์ ๊ผฌ๋ฆฌ ์ขํ๋ฅผ ์
๋ฐ์ดํธํ๋ค.int[] dyx = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}
D
)๋ก 90๋๋ dyx
์์ ์ธ๋ฑ์ค+1, ์ผ์ชฝ์ผ๋ก 90๋๋ ์ธ๋ฑ์ค-1๋ก ์ฒ๋ฆฌํ๋ค. (directionIdx+4+(๋ฐฉํฅ์ด๋)) % 4)
๋ก ์ฒ๋ฆฌํ๋ค. int N
: ๊ทธ๋ฆฌ๋ ํ ๋ณ์ ํฌ๊ธฐgrid = new int[N][N]
: N์ผ๋ก ๊ทธ๋ฆฌ๋๋ฅผ ์ด๊ธฐํํ๋คint K
: ์ฌ๊ณผ ๊ฐ์K
๋ก for loop
์ ์ํํด์ ์ขํ๊ฐ y์ x๋ฅผ ๋ฐ๋๋คgrid[y][x] = 2
๋ก ๊ทธ๋ฆฌ๋์ ์ฌ๊ณผ๋ฅผ ํ์ํ๋คint L
: ๋ฐฉํฅ ์ด๋ ์์ ๋ฐ ์ค๋ฅธ์ชฝ/์ผ์ชฝ ์ฌ๋ถint[][] moves = new int[L][2]
์ ๋ด๋๋คmoves[i][0]
์ ๋ฐฉํฅ ๋ฐ๊พธ๋ ์์ ์ ๋ด๋๋คmoves[i][1]
์ ์ค๋ฅธ์ชฝ์ผ๋ก ๋๋์ง, ์ผ์ชฝ์ผ๋ก ๋๋์ง ๋ด๋๋คD
)์ด๋ฉด 1, ์ผ์ชฝ(L
)์ด๋ฉด -1ํ์์ (1) ๋ฐฉํฅ ์ด๋ ๋ฐฐ์ด์ ๊ดํ ํ์ ๊ณผ์ (2) ๋ฐฉํฅ ์ด๋์ ๋ชจ๋ ๋๋ ์์ ์์ ํ์ ๊ณผ์ ์ 2 ๊ฐ์ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ตฌ์ฑํ๋ค.
๋ณ์ ์ ์ธ ๋ฐ ์ด๊ธฐํ
int headY = 0, int headX = 0
: ๋ฑ์ ๋จธ๋ฆฌ ์ขํ๋ฅผ ์ ์ฅํ๋คint tailY = 0, int tailX = 0
: ๋ฑ์ ๊ผฌ๋ฆฌ ์ขํ๋ฅผ ์ ์ฅํ๋คint directionIdx = 0
: ๋ฐฉํฅ ๋ฐฐ์ด์ ์ขํ๋ฅผ ์ ์ฅํ๋คD
) ์ด ๋ณ์์ 1์ ๋ํ๋คL
) ์ด ๋ณ์์ 1์ ๋บ๋คint prevTime = 0
: ํ์ฌ ์์ ์ ์ ์ฅํ๋คint ny = 0, int nx = 0
: ํ์ํ ์ขํ๋ฅผ ์ ์ฅํ๋ค๋ฐฉํฅ ์ด๋ ๋ฐฐ์ด์ ๋ํ for loop
for (int i = 0; i < L; i++)
moves[i][0]
) ๊ฐ ์๊ฐ์ฐจ(int timeInterval
)๋ฅผ ๊ตฌํ๋ค(ny, nx)
๋ฅผ ํ์ธํ๋ค for (int j = 1; j <= timeInterval; j++)
for loop์ ๊ตฌํํ๋คnested for loop (timeInterval
์ ๋ํ for loop) ๋ด๋ถ ๊ตฌํ
ny
, nx
๊ฐ์ ์
๋ฐ์ดํธํ๋คny = headY + dyx[directionIdx][0]
nx = headX + dyx[directionIdx][1]
grid[ny][nx]==1
)๋ผ๋ฉด ๊ฒ์์ด ๋๋๋ ํ์ฌ ์์ (prevTime + j
)๋ฅผ ๋ฆฌํดํ๋คgrid[tailY][tailX]
)์ 1์์ 0์ผ๋ก ๋ฐ๊พธ๊ณ , snake.removeFirst()
๋ก ๊ผฌ๋ฆฌ ์ขํ๋ฅผ ์ต์ ์
๋ฐ์ดํธํ๋คnested for loop์ด ๋๋๋ฉด ๋ค์ ๋ฐฉํฅ ์ด๋ ๊ฑด์ผ๋ก ๋์ด๊ฐ๊ธฐ ์ ์ directionIdx
์ prevTime
์ ์
๋ฐ์ดํธํ๋ค
directionIdx = (4+directionIdx+moves[i][1]) % 4
prevTime = moves[i][0]
๋ฐฉํฅ ์ด๋์ด ๋ชจ๋ ์๋ฃ๋์์๋ ์์ง ๊ฒ์์ด ๋๋์ง ์์์ผ๋ฉด, ๊ฒ์ ์ข ๋ฃ ์กฐ๊ฑด์ ๋ง์กฑํ ๋๊น์ง ๋ง์ง๋ง ๋ฐฉํฅ ์ด๋์์ ์ ํด์ง ๋ฐฉํฅ์ผ๋ก ๊ณ์ ์ด๋ํ๋ค.
๊ทธ๋์ while loop
์ ํ์ฉํด์ ๋งค ๋ฃจํ๋ง๋ค ๋ค์์ ์ํํ๋ค
ny = ny + dyx[directionIdx][0]
nx = nx + dyx[directionIdx][1]
prevTime++
if (ny < 0 || nx < 0 || nx >= N || ny >= N || grid[ny][nx] == 1) return prevTime;
์ผ๋จ ๋นจ๋ฆฌ ํ๊ณ ์ถ์ด์ ์ฝ๋๋ฅผ ์ง๋ค๋ณด๋ ๊น๋ํ ์ฝ๋๋ ์๋๊ณ .. ํต๊ณผํ ์ ์๋ ์ฝ๋๋ฅผ ์ง ๊ฒ ๊ฐ๋ค.
์์ outer for loop์ while ๋ฌธ์ผ๋ก ๋์ฒดํด์ ํ์ 2ํํธ๋ฅผ ํ๋์ ํํธ๋ก ํฉ์น ์ ์์ ๊ฒ ๊ฐ๋ค.
๊ณจ๋ 2
์์์ ์ผ๋ก ๊ฐ์ฅ ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ (์๋ธ ํธ๋ฆฌ)๋ถํฐ ์ ํ๋ฅผ ๊ฑธ์ด์ผ์ง ์ต์ ์๊ฐ์ ์ป์ ์ ์๋ค.
์๋ฅผ ๋ค์ด ๋ฃจํธ ๋ ธ๋ (0)์ด 3๊ฐ์ ์๋ธํธ๋ฆฌ A, B, C๋ฅผ ๊ฐ๋๋ค๊ณ ๊ฐ์ ํ์.
์๋ธํธ๋ฆฌ A๋ ์ด 2์ด๊ฐ ๊ฑธ๋ฆฌ๊ณ , ์๋ธํธ๋ฆฌ B๋ ์ด 3์ด, ๊ทธ๋ฆฌ๊ณ ์๋ธํธ๋ฆฌ C๋ ์ด 1์ด๊ฐ ๊ฑธ๋ฆฐ๋ค. ๊ทธ๋ฌ๋ฉด B-A-C ์์ผ๋ก ๋ฐฉ๋ฌธํด์ผ ํ๋ค. ๊ทธ๋ฐ๋ฐ, ๋ฃจํธ ๋ ธ๋์์ ๋์์ 3๊ฐ์ ์๋ธํธ๋ฆฌ ์ ๋ถ๋ฅผ ๋ฐฉ๋ฌธํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฅ ์ค๋ ๊ฑธ๋ฆฌ๋ ์๋ธํธ๋ฆฌ๋ถํฐ ์์ฐจ์ ์ผ๋ก 1์ด์ฉ ๊ฑธ๋ ค์ ๋ฐฉ๋ฌธํด์ผ ํ๋ค.
๊ทธ๋์ ๋ฃจํธ ๋ ธ๋์์ ์๋ธํธ๋ฆฌ B๋ฅผ ๋ฐฉ๋ฌธํ๋๋ฐ 1์ด, ๊ทธ๋ฆฌ๊ณ ์๋ธํธ๋ฆฌ B์ ๊ฑธ๋ฆฌ๋ ์ด ์๊ฐ 3์ด๋ฅผ ๋ํด ์ต์ข ์ ์ผ๋ก 4์ด๊ฐ ๊ฑธ๋ฆฐ๋ค. ์๋ธํธ๋ฆฌ A๋ 1 + 2 (์๋ธํธ๋ฆฌ A์ ๊ฑธ๋ฆฌ๋ ์๊ฐ) = 3์ด๊ฐ ๊ฑธ๋ฆฐ๋ค. ์๋ธํธ๋ฆฌ 3์ ์ด 2์ด๊ฐ ๊ฑธ๋ฆฐ๋ค.
ํ๋์ ๋ ธ๋๊ฐ ๋์์ ์ฌ๋ฌ ๊ณณ์ ์ ํ๋ฅผ ๊ฑฐ๋ ๊ฒ์ ํ์ฉ๋์ง ์์ง๋ง, ํ๋์ ๋ ธ๋๊ฐ ์ ํ๋ฅผ ํ๋ ์ฌ์ด์ ๋ค๋ฅธ ๋ ธ๋๊ฐ ์ ํํ๋ ๋์ ์ ํ๋ ํ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ ๊ฐ ์ค ์ต๋ ๊ฐ์ ๋ต์ผ๋ก ๋ฐํํ๋ฉด ๋๋ค.
ํ๋ก๊ทธ๋๋ฐ์ผ๋ก ์ ๊ทผํด๋ณด์.
<ํด๊ฒฐ ๋ฐฉ์ ๊ณ ์> ์น์ ์์ ๋ฃจํธ ๋ ธ๋์๋ถํฐ ๋ถ๋ชจ, ๊ทธ ๋ค์ ์์ ์์ผ๋ก ์ ๊ทผํ๋ฏ์ด Top-down ๋ฐฉ์์ผ๋ก DFS๋ฅผ ์ํํ๋ฉด ๋๋ค.
์
๋ ฅ ๋ฐฐ์ด์ List<List<Integer>> tree
์ ์ ์ฅํ๋๋ฐ, ๊ฐ ์ธ๋ฑ์ค์ ์์ ์ ์์๋ค์ ๋ฒํธ๋ฅผ ์ ์ฅํ๋ค.
๋ฃจํธ ๋ ธ๋ (0)๋ถํฐ ์์ํด์ ํ ๋ ธ๋์ ์์์ ๋ํด DFS๋ฅผ ์ํํด์ ํ ๋ ธ๋์ ๋ํ ์๋ธํธ๋ฆฌ์ ๊ฑธ๋ฆฌ๋ ์ด ์๊ฐ์ ์ป์ด๋ธ๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ DFS ๋ด๋ถ ๋ก์ง์ ์์์ ์ธ๊ธํ ์๊ฐ ์ฐ์ฐ ๋ก์ง์ ํฌํจํด์ผ ํ๋ค.
List<Integer> children = new ArrayList<>()
๋ฅผ ์ด๊ธฐํํ๋ค. children
๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค. children
๋ฆฌ์คํธ๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋ค์ time=1
์ 1์ด์ฉ ์ถ๊ฐํด๊ฐ๋ฉฐ ๋ํ๋ค๋ด์ค ์ ํ๊ธฐ # 1135 ํ์ด ์ฝ๋
์ฝ๋ฉํ
์คํธ ์คํฐ๋์์ ์ฐ์ ์์ํ ์ฃผ์ ๊ด๋ จ์ผ๋ก ๋ฝ์ ๋ฌธ์ ์๋ค. ๋ฌธ์ ํ์ด ๊ณผ์ ์์ ์ต๋ ์๊ฐ์ ์ป์ด๋ด๋ ๊ณผ์ ์์ ์ฐ์ ์์ํ๋ฅผ ์ฌ์ฉํ๋๋ฐ, for loop
๋ด๋ถ์์ ๋งค๋ฒ pq.add()
์ฐ์ฐ์ ํด์ ์๊ฐ ๋ณต์ก๋๊ฐ O(n*log n)์ด๋ค. ์๊ฐ ๋ณต์ก๋ ๋ฉด์์๋ ๋จ์ํ๊ฒ Math.max()
๋ฅผ ํ๋ ๊ฒ์ด ๋ ์ข์์ ๊ฒ ๊ฐ๋ค.
์ค๋ฒ 3
์
๋ ฅ N์ด ์ฃผ์ด์ก์ ๋ 3์ N์น ๊ธธ์ด์ "-" ๋ฌธ์์ด์ ๊ฐ์ ํ๋ค.
(์) N์ด 1์ด ์ฃผ์ด์ง๋ฉด "---"์ ๊ฐ์ ํ๋ค.
๋ฌธ์์ด์ ์ผ๋ฑ๋ถํด์ ์ค๊ฐ ๋ถ๋ถ์ ๊ณต๋ฐฑ์ผ๋ก ๋์ฒดํ๋๋ฐ, ๋ชจ๋ ์ฐ์ "-"์ ๊ธธ์ด๊ฐ 1์ผ ๋๊น์ง ์ด ์์ ์ ๋ฐ๋ณตํ๋ค.
ํ์ถ ์กฐ๊ฑด (์ฐ์ "-" ๊ธธ์ด๊ฐ 1)์ด ์ ํด์ ธ ์์ด์ ์ฌ๊ท ๋ฌธ์ ๋ผ๊ณ ํ๋จํ๋ค.
"-"์ ๊ธธ์ด๊ฐ 1์ด๋ผ๋ฉด "-" ์ฌ์ด์ ๊ณต๋ฐฑ ๋ํ 1์ด๋ผ๋ ์ ์ ์ง์คํ๋ค.
์ผ๋ฑ๋ถ ์ค ์ค์์ "-"์ ๊ณต๋ฐฑ์ผ๋ก ๋์ฒดํ๋ ๋๋ ๊ณต๋ฐฑ์ ์์์ ๊ณผ ๋์ ์ ์๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ์ผ๋ฑ๋ถ์ด๋ผ๋ ์กฐ๊ฑด์ด ์ฃผ์ด์ก์ผ๋ ๋ฌธ์์ด์ ์์๊ณผ ๋์ ์ ์๋ฉด ๊ณต๋ฐฑ์ ์์์ ๊ณผ ๋์ ์ ๊ตฌํ ์ ์์๋ค.
int diff = (end - start) / 3;
int mid1 = start + diff;
int mid2 = start + diff * 2;
๊ทธ๋์ ๋๋ ์ด ๋ฌธ์ ๋ฅผ (๋ฌธ์์ด) + (๊ณต๋ฐฑ) + (๋ฌธ์์ด)
์ ํํ๋ก ์ดํดํ๋ค. ๊ทธ๋์ ๋ฌธ์์ด์ ์์์ ๊ณผ ๋์ ์ ์ธ์๋ก ๋ฐ๋ ์ฌ๊ทํจ์๋ฅผ ๊ตฌ์ํ๋ค.
private static String divide(int start, int end) {
if (end == 1) return "-";
int diff = (end - start) / 3;
int mid1 = start + diff;
int mid2 = start + diff * 2;
if (mid2 - mid1 == 1)
return "- -";
return divide(start, mid1) + " ".repeat(diff) + divide(mid2, end);
}
์ฝ์ง์ ์์์น ๋ชปํ ๊ณณ์์ ๋ฐ์ํ๋ค. ํ์ผ์ ๋์์๋ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํด์ผ ํ๋ค๋๋ฐ ์ ๋ ฅ์ ๋ช ๊ฐ ์ค์ง ์๋ ค์ฃผ์ง๋ ์๊ณ ์ด๋ป๊ฒ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃํด์ผ ํ ์ง ์ดํด๊ฐ ์ ๊ฐ๋ค.
br.readLine()
๋ก ์
๋ ฅ์ ๋ฐ๋๋ค๊ณ ๊ฐ์ ํ๋ฉด ์ด์ ๋ํ Integer.parseInt
๋ฅผ ํ๋ ์ค์ try-catch ๋ฌธ์ ๊ฑธ์ด์ ์๋ฌ ๋ฐ์์ ํ๋ก๊ทธ๋จ์ ์ข
๋ฃํ๋ฉด ๋๋ค.
์ค๋ฒ3
4๊ฐ์ ์ ์ ์ค ๋๋ฒ์งธ๋ก ์์ ๊ฐ์ ์ฐพ๋ ๊ฒ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ฐ์ฐ์ด๋ผ ํ๋จํด์ ๋ฒ ์ด์ค ์ผ์ด์ค๋ฅผ ํ ๋ณ์ ๊ธธ์ด๊ฐ 2์ธ ๊ฒฝ์ฐ๋ก ๊ฒฐ์ ํ๋ค.
N=2
์ด๊ณ , x=0
, y=0
์ธ ๊ฒฝ์ฐ์๋ ํด๋น ๊ตฌ์ญ์ {{0, 0}, {0, 1}, {1, 0}, {1, 1}}
์ ์ขํ๊ฐ ์กด์ฌํ๋ค. ์ด ์ขํ๋ค์ {0, 0}
์ ๊ธฐ์ค์ผ๋ก ๊ฐ๊ฐ ์ด๋ ์์, ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ, ์๋๋ก ํ์นธ, ๋๊ฐ์ ์ผ๋ก ํ์นธ ์ด๋์ด๊ธฐ ๋๋ฌธ์ ์ฌ๋ฐฉ ํ์ ๋ก์ง์ผ๋ก dx, dy ๋ฐฐ์ด์ ์ ์ธํ๋ค.
int[][] dyx = {{0, 0}, {0, 1}, {1, 0}, {1, 1}}
int[] dy = {0, 0, 1, 1}
int[] dx = {0, 1, 0, 1}
์ด๋ ๊ฒ ๊ตฌํ ์ขํ๋ค์ ๊ธฐ๋ฐ์ผ๋ก 4๊ฐ ๊ฐ์ ๊ฐ์ ธ์ค๋ฉด ์ด ์ค ๋๋ฒ์งธ๋ก ์์ ๊ฐ์ ๊ตฌํ๋ฉด ๋๋ค.
๋ฐฐ์ด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ ๋ค์ ์ธ๋ฑ์ค 1์ ๊ฐ์ ๊ฐ์ ธ์ค๋ฉด ์ง๊ด์ ์ด์ง๋ง, ์๊ฐ ๋ณต์ก๋๋ฅผ ์ต์ํํ๊ธฐ ์ํด Math.min
์ ํ์ฉํ๊ณ ์ ํ๋ค. 4๊ฐ ๊ฐ ์ค ์ต์ ๊ฐ์ ์ฐพ์ ์ ๊ฑฐํ๊ณ , ๋จ์ 3๊ฐ ๊ฐ ์ค ์ต์ ๊ฐ์ ์ฐพ์ ๋ฆฌํดํ๋ ํจ์๋ฅผ ์ค๊ณํ๋ค.
ํน๋ณ์์ด๋ผ๋ ๋ฐ๊ณ ์ถ์ด #24460 ํ์ด ์ฝ๋
๋ก์ง์ ์ง๊ด์ ์ด์์ง๋ง, ํ ์คํธ์ผ์ด์ค ํต๊ณผ 97%์์ ์๊ฐ ์ด๊ณผ ์๋ฌ๊ฐ ๋ฐ์ํด์ ์ด๋ ค์์ ๊ฒช์๋ค.
๋งจ ์ฒ์์ผ๋ก ์๋ํ๋ ๋ฐฉ๋ฒ์ด๋ค. Priority Queue (๋ํดํธ๋ก min heap) ์ ๋ค ์ขํ์ ๊ฐ์ ์ถ๊ฐํด์ ๋๋ฒ์งธ .poll()
์ ๊ฐ์ ๋ฆฌํดํ๋ ๋ฐฉ์์ผ๋ก ๋๋ฒ์งธ๋ก ์์ ๊ฐ์ ์ป์๋ค.
ํ์ง๋ง ์ฐ์ ์์ํ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๊ณผํ๋ค. .poll()
์ ๋จ์ํ ๋ฃจํธ ๋
ธ๋๋ฅผ ๋ฆฌํดํ๊ธฐ ๋๋ฌธ์ O(1)์ด์ง๋ง .add()
๋ O(log N)๋ฅผ ๊ฐ์ง๋ค. ๋ฐ์ดํฐ ์ถ๊ฐ ํ heapify ๊ณผ์ ์ ํตํด min heap์ ๊ตฌ์กฐ๋ฅผ ์ ์งํด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐฑ์ค์ด ํ ์คํธ์ผ์ด์ค ๊ฒ์ฆ์ ์ฌ์ฉํ๋ Java11 ๊ธฐ์ค์ผ๋ก quick sort๋ฅผ ์ฌ์ฉํด์ ํด๋น ํจ์๋ฅผ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ O(n)์์ O(n^2)๊น์ง ๊ฑธ๋ฆด ์ ์๋ค. ํ๊ท ์ ์ผ๋ก๋ O(n * log(n))์ด์ง๋ง ์ต์ ์ธ O(n^2)์ ์๊ฐํ๋ฉด ์ข์ง ๋ชปํ ์ ํ์ด๋ค.
์ฐธ๊ณ ๋ก Java 14๋ถํฐ๋ ์ต์ ์ ๊ฒฝ์ฐ์๋ O(n * log (n))๋ฅผ ๋ณด์ฅํ๋๋ก ๊ตฌํ๋์๋ค๊ณ ํ๋ค
https://velog.io/@becooq81/JAVA-Priority-Queue%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EC%9E%90
https://stackoverflow.com/questions/22571586/will-arrays-sort-increase-time-complexity-and-space-time-complexity
์ค๋ฒ2
์
๋ ฅ์ ์ธ๋ฑ์ค 0๋ถํฐ ์์ฐจ์ ์ผ๋ก ํ์ํ๋ while loop
์ผ๋ก ์ค์ ํ ๋ค์, ๊ฐ๊ฐ ์
๋ ฅ์ ๋ํด์ ํน์ ์ผ์ด์ค 3๊ฐ์ ์ผ๋ฐ ํค๋ณด๋ ์
๋ ฅ์ ๊ตฌ๋ถํ๋ if-else ๊ตฌ์กฐ๋ก ๊ฐ๊ณ ์ ํ๋ค.
์ ๋ ฅ์ ๋ํ ์ธ๋ฑ์ค ๋ง๊ณ ๋, ๊ฒฐ๊ณผ(๋งํฌ๋๋ฆฌ์คํธ๋ก ๊ด๋ฆฌ)์ ๋ํ ์ธ๋ฑ์ค๋ ๊ด๋ฆฌํ๋ค. ์ ๋ ฅ ์ธ๋ฑ์ค๋ ํค๋ณด๋ ์ ๋ ฅ์ ์ธ๋ฑ์ค๊ณ , ๊ฒฐ๊ณผ ์ธ๋ฑ์ค๋ ๋ค์ ์ ๋ ฅ๊ฐ์ ์ ์ฅํ ์ธ๋ฑ์ค๋ผ๊ณ ์ ์ํ๋ค.
์๋ฅผ ๋ค์ด, a<b
๋ผ๋ ์
๋ ฅ์ด ์ฃผ์ด์ง๋ค๋ฉด, while loop
๊ฐ ๋ค์๊ณผ ๊ฐ์ด ์งํ ๋ ๊ฒ์ด๋ค
์ผ์ชฝ ์ด๋์ธ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ ์ธ๋ฑ์ค์์ 1์ ๋บ๋ค. ํ์ง๋ง ๊ทธ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ์์๋ฉด ์ธ๋ฑ์ค ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ธฐ ๋๋ฌธ์ 0์ผ๋ก ์ฌ์ค์ ํ๋ค
์ค๋ฅธ์ชฝ ์ด๋์ธ ๊ฒฝ์ฐ ๊ฒฐ๊ณผ ์ธ๋ฑ์ค์ 1์ ๋ํ๋ค. ํ์ง๋ง ๊ทธ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋งํฌ๋๋ฆฌ์คํธ(ํ์ฌ๊น์ง์ ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํ ๊ฒ)์ ํฌ๊ธฐ๋ณด๋ค ํฌ๋ฉด ์ธ๋ฑ์ค์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ธฐ ๋๋ฌธ์ ๋งํฌ๋๋ฆฌ์คํธ์ ํฌ๊ธฐ ๊ฐ์ผ๋ก ์ ์ฅํ๋ค.
๋ฐฑ์คํ์ด์ค๋ ๋ ๊ฐ์ง ์กฐ๊ฑด์ ์ถฉ์กฑํด์ผ ๊ฐ์ ์ ๊ฑฐํ ์ ์๋ค.
ํ์ฌ ๊ฒฐ๊ณผ ์ธ๋ฑ์ค๊ฐ 0์ด๊ณ , ๊ธ์๋ฅผ ์ถ๊ฐํ๊ฒ ๋๋ฉด ๋ด๊ฐ ์๋ํ ๋๋ก ๋งํฌ๋๋ฆฌ์คํธ์ ๋งจ ์์ ๊ฐ์ ์ถ๊ฐํ ์ ์๋ค. ํ์ง๋ง ๊ธ์๋ฅผ ์ ๊ฑฐํ๊ณ ์ ํ ๋๋ ์ปค์๊ฐ ๋งจ ์์ ์์ผ๋ ์๋ฌด๊ฒ๋ ์ง์์ง๋ฉด ์๋๋๋ฐ, list.remove(0)
๋ ๋งํฌ๋๋ฆฌ์คํธ์ ์ฒซ ๊ฐ์ ์ ๊ฑฐํ๋ค. ๊ทธ๋ฌ๋ list.remove(idx-1)
๋ก ๊ตฌํํด์ผ ํ๋ค.
์ํ๋ฒณ ๋์๋ฌธ์์ ์ซ์ ๋ฑ ์ผ๋ฐ ์ ๋ ฅ์ด ๋ค์ด์ค๋ฉด ๋จ์ํ ๊ฒฐ๊ณผ ์ธ๋ฑ์ค ์์น์ ๊ธ์๋ฅผ ์ถ๊ฐํ๋ฉด ๋๋ค. ๋งค๋ฒ ๊ธ์๋ฅผ ์ถ๊ฐํ ๋๋ง๋ค ๊ฒฐ๊ณผ ์ธ๋ฑ์ค ๊ฐ์ 1์ฉ ๋๋ ค์ผ ํ๋ค.
~~์๊ฐ์ ๊น์ด ์ํ๊ณ ... ์ด๋ฒ์ฃผ ์คํฐ๋ ์ฃผ์ ๊ฐ ์คํ/ํ๋๊น ์คํ์ ์ฐ์๋ผ๊ณ ์๊ฐํ๋๋ฐ... ํ์ฌํผ ํน์ ์ธ๋ฑ์ค์์ ๊ธ์๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ์ถ๊ฐํด์ผ ํ ์ผ์ด ๋ง๊ธฐ ๋๋ฌธ์ .push()
, .pop()
์ผ๋ก ํด๊ฒฐํ ์ ์๋ ๋ฌธ์ ๊ฐ ์๋์๋ค. ~~
์คํ์ผ๋ก ํ๋ฆด ์ ์๋ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋๋ฐ, ๋ฌธ์ ์ ์ ์คํ์ ํ๋๋ง ์ฌ์ฉํ๋ค๋ ๊ฑฐ์๋ค. ์คํ์ 2๊ฐ ์ฌ์ฉํด์ ์ปค์์ ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ์๋ ๊ฐ๋ค์ ๋น๊ตํ๋ฉด ๋์๋ค. ์ด ํ์ด๋ ๊นํ๋ธ ๋งํฌ์ ์๋ค.
๊ทธ๋์ removeAt()
, add(int idx, Object o)
ํจ์๋ฅผ ๊ฐ๋ ArrayList๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ์ผ๋, ์๊ฐ์ด๊ณผ๊ฐ ๋ฌ๋ค. ArrayList๋ ์์ฐจ์ ์ธ ๋ฐ์ดํฐ ์ถ๊ฐ ๋ฐ ์ญ์ ์ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ ์์ํ ์ ์๋ ์ธ๋ฑ์ค์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ์ถ๊ฐํด์ผ ํ๋ ํด๋น ๋ฌธ์ ์๋ ์ ํฉํ์ง ๋ชปํ ์๋ฃ๊ตฌ์กฐ์๋ค.
๋งํฌ๋๋ฆฌ์คํธ๋ ๋น์์ฐจ์ ์ธ ๋ฐ์ดํฐ ์ถ๊ฐ ๋ฐ ์ญ์ ์ ๋น ๋ฅด๋ค.