1. ๋ฌธ์ ์ ๋ํ์ฌ ๐ฆ
(1) ์กฐ๊ฑด ๋ถ์ ๐
- ๋์ผํ ์๊ฐ ์ฐ์์ผ๋ก ๋์ค๋ฉด ์ ๊ฑฐ ํด์ผํ๋ค.
- ๊ทผ๋ฐ ์ฐ์๋์ง ์์ผ๋ฉด ์๊ฐ ์ค๋ณต๋์ด ๋์๋ ์๊ด ์๋ค.
์์
- [ 1, 2, 2, 0, 2] ๋ก ๋์์๋ค๋ฉด, ์ ๊ฑฐ๋๊ณ ๋จ์ ๋ฐฐ์ด์ [ 1, 2, 0, 2] ์ด๋ค.
2. ์ฝ๋๊ฐ ๋์ค๊ธฐ๊น์ง ๐ ๏ธ
KEY WORD: STACK ํ์ฉ
JAVA์์ ๊ธฐ๋ณธ ์ ๊ณตํ๋ ์๋ฃ๊ตฌ์กฐ STACK์ ํ์ฉํ์ง ์๊ณ , ๋ฐฐ์ด์ ํ์ฉํ์ฌ ํผ๋ค.
์ด์ ๋ ์๋ฃ๊ตฌ์กฐ ํด๋์ค ์ด์ฉ์ผ๋ก ๋๋ ์ค๋ฒํค๋๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํจ์ด๋ค.
JAVA์ STACK ํด๋์ค๋ vector๋ฅผ ์์๋ฐ์ ๋ชจ๋ ๋ฉ์๋๋ฅผ ๋๊ธฐํ(syncronized)ํ๊ธฐ ๋๋ฌธ์, ๋จ์ผ ์ค๋ ๋ ํ๊ฒฝ์์ ๋ถํ์ํ ์ฑ๋ฅ ์ ํ๊ฐ ์ผ์ด๋๋ค.
๋ฐ๋ผ์ ๋ฐฐ์ด๋ก ์ ์ฒด๋ฅผ ๊ตฌํํด์ ํ์๋ค.
(1) ์๊ฐ๋ณต์ก๋ ๋ถ์ โณ
๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ 1,000,000 ๊ฐ ์ด์ง๋ง ๋ฐฐ์ด์ ํ ๋ฒ๋ง ๋๋ฉด ๋๊ธฐ ๋๋ฌธ์ ์๊ด ๋ฌด
3. ์ฝ๋ ๐
(1) SUDO CODE ๐ฌ
// ๋ฐฐ์ด๋ก ํ์๋ค๋ ๊ฒ ๋นผ๊ณ ๋ ๊ธฐ์กด STACK ํ์ด์ ๊ฐ๋ค.
1. stack์ TOP๊ณผ ๊ฐ์ ๊ฐ์ ์ ์ฅํ์ง ์๊ณ ์ง๋๊ฐ๊ณ ๋ค๋ฅธ ๊ฐ์ ์ ์ฅํ๋ค.
2. ์ ์ฅํ ๊ฒฝ์ฐ stack์ top์ ๋ํ๋ด๋ iter๋ฅผ +1 ์ฌ๋ ค์ ๊ฐ์ ์ ์ฅํด์ผ ํ๋ค.
(stack์์ ์์ ์์ด๋ ๋ชจ์ต ๊ตฌํ)
(2) JAVA CODE โ
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int iter = 0;
int [] stack = new int [arr.length];
Arrays.fill(stack, -1);
for(int i = 0; i < arr.length; i++){
if(i == 0) {
stack[iter] = arr[i];
continue;
}
if(stack[iter] == arr[i]) continue;
stack[++iter] = arr[i];
}
int [] answer = new int [iter+1];
for(int i = 0; i <= iter; i++){
answer[i] = stack[i];
}
return answer;
}
}
4. ํธ๋ฌ๋ธ ์ํ or ๋ฐฐ์ด ์ ๐
0