✔ 같은 숫자는 싫어
문제 분석하기
스택/큐를 사용하여 원소를 집어 넣은 후, 바로 앞에 존재하는 원소일 경우 스택/큐에 집어 넣지 않도록 함
손으로 풀어보기
- 스택/큐에 원소를 집어 넣음
- 바로 앞에 존재하는 원소일 경우 스택/큐에 집어 넣지 않도록 함
- 스택/큐 리턴
슈도코드 작성하기
arr(숫자 0부터 9까지로 이루어져 있는 원소들)
stack(원소를 담을 stack)
for(arr의 크기만큼) {
if(stack에 원소가 존재하지 않을 경우)
stack에 원소 추가
}
stack 리턴
arr(숫자 0부터 9까지로 이루어져 있는 원소들)
queue(원소를 담을 queue - Deque 자료구조를 이용하여 구현)
for(arr의 크기만큼) {
if(queue에 원소가 존재하지 않을 경우)
queue에 원소 추가
}
queue 리턴
코드 구현하기
/**
* 12906) 같은_숫자는_싫어
*/
public class K001_12906 {
// arr(숫자 0부터 9까지로 이루어져 있는 원소들)
public int[] solution(int[] arr) {
// stack(원소를 담을 stack)
Stack<Integer> stack = new Stack<>();
for (int element : arr) {
// stack에 원소가 존재하지 않을 경우
if (stack.isEmpty() || stack.peek() != element)
// stack에 원소 추가
stack.add(element);
}
// stack 리턴
int[] answer = new int[stack.size()];
int index = 0;
for (int element : stack) {
answer[index++] = element;
}
return answer;
}
// 테스트 케이스
public static void main(String[] args) {
K001_12906 solution = new K001_12906();
int[] arr = { 1, 1, 3, 3, 0, 1, 1 };
int[] result = solution.solution(arr);
System.out.println(Arrays.toString(result));
}
}
/**
* 12906) 같은_숫자는_싫어
*/
public class K001_12906 {
// arr(숫자 0부터 9까지로 이루어져 있는 원소들)
public int[] solution(int[] arr) {
// queue(원소를 담을 queue - Deque 자료구조를 이용하여 구현)
Deque<Integer> queue = new LinkedList<>();
for (int element : arr) {
// queue에 원소가 존재하지 않을 경우
if (queue.isEmpty() || queue.getLast() != element)
// queue에 원소 추가
queue.add(element);
}
// queue 리턴
int[] answer = new int[queue.size()];
int index = 0;
for (int element : queue) {
answer[index++] = element;
}
return answer;
}
// 테스트 케이스
public static void main(String[] args) {
K001_12906 solution = new K001_12906();
int[] arr = { 1, 1, 3, 3, 0, 1, 1 };
int[] result = solution.solution(arr);
System.out.println(Arrays.toString(result));
}
}
'Coding Test > Java 알고리즘 실전' 카테고리의 다른 글
[42748] K번째수 (0) | 2023.10.29 |
---|---|
[42626] 더 맵게 (0) | 2023.10.28 |
[1845] 폰켓몬 (0) | 2023.10.27 |
[142086] 가장 가까운 같은 글자 (0) | 2023.10.26 |
[147355] 크기가 작은 부분문자열 (0) | 2023.10.25 |