배열 주어질 때 연속으로 반복되는 숫자는
하나만 남기고 전부 제거해야 함 👊
단, 숫자의 순서는 그대로 유지해야 함
ex )
- 입력 : [1, 1, 3, 3, 0, 1, 1]
결과 : [1, 3, 0, 1]- 입력 : [4, 4, 4, 3, 3]
결과 : [4, 3]
function solution(arr) {
// 새로운 배열 만들기
// 여기엔 같은 숫자가 연속으로 나오지 않을 것
const result = [];
// 배열의 숫자들을 하나씩 확인
for (let i = 0; i < arr.length; i++) {
// 첫 번째 숫자는 바로 넣어주기
// 또는 지금 숫자가 바로 전 숫자와 다를 때만 넣기
if (i === 0 || arr[i] !== arr [i - 1]) {
// 숫자를 새 배열에 추가
result.push(arr[i]);
}
}
// 이제 중복 제거된 숫자들만 들어있는 새 배열 반환
return result;
}
console.log(solution([1, 1, 3, 3, 0, 1, 1])); // [1, 3, 0, 1]
console.log(solution([4, 4, 4, 3, 3])); // [4, 3]
스택 방식 사용한다면 이전 숫자를
스택의 마지막 값으로 활용해 중복을 비교할 수 있음
function solution(arr) {
// 스택 역할을 할 빈 배열 준비
const stack = [];
for (let num of arr) { // 배열의 숫자들을 하나씩 확인
if (stack.length === 0 || stack[stack.length - 1] !== num) {
// 스택이 비어 있거나, 스택의 마지막 값과 지금 숫자가 다르면
stack.push(num); // 숫자를 스택에 추가
}
}
// 중복 제거한 결과가 스택에 담겨있음
return stack;
}