문제요약
배열 arr가 주어진다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져있다. 이때 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거한다. 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 한다.
입출력 예
arr | answer |
[1,1,3,3,0,1,1] | [1,3,0,1] |
[4,4,4,3,3] | [4,3] |
문제풀이
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer = {};
Stack<Integer> stack = new Stack<>();
for(int i=0; i<arr.length; i++){
if(stack.size() == 0 || arr[i] != stack.peek()){
stack.push(arr[i]);
}
}
answer = new int[stack.size()];
for(int i=0; i<stack.size(); i++){
answer[i] = stack.get(i);
}
return answer;
}
}
스택을 사용해서 문제를 풀어봤다.
스택 후입선출 방식을 활용한다.
stack.peak()는 가장 마지막에 넣은 값을 반환한다.
stack.push()는 스택에 데이터를 넣는다.
연속된 숫자를 확인하기 위해 스택에 마지막에 들어간 값과 새로 넣을 값을 비교해서 연속된 숫자를 확인한다.
'프로그래머스' 카테고리의 다른 글
Lv1 3진법 뒤집기 (0) | 2025.07.14 |
---|---|
Lv1 최대공약수와 최소공배수 (2) | 2025.07.11 |
Lv1 문자열 내림차순으로 배치하기 (1) | 2025.07.09 |
Lv1 정수 내림차순으로 배치하기 (0) | 2025.07.05 |
Lv0 정수를 나선형으로 배치하기 (0) | 2025.07.01 |