[스택] 같은 숫자는 싫어

지은·2022년 11월 23일
0

Algorithm

목록 보기
4/33

문제

배열에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거한 배열을 리턴해야 한다.
이때 배열의 원소의 순서를 유지해야 한다.

  • 배열의 크기 : 1,000,000 이하의 자연수
  • 배열의 각 원소 : 0 ~ 9의 정수

입출력 예

[1, 1, 3, 3, 0, 1, 1] → [1, 3, 0, 1]
[4, 4, 4, 3, 3] → [4, 3]


의사 코드

// 스택을 하나 만든다.

// 반복문을 돌려 배열의 요소를 순회한다.
  // 만약, 스택의 마지막 요소와 현재 요소가 다르다면, push한다.

// 반복문이 끝나고 스택을 리턴한다.

풀이

function solution(arr){
    const stack = [];

    for (el of arr) {
        if (stack[stack.length - 1] !== el) {
            stack.push(el);
        }
    }
    return stack;
}

더 간결한 풀이

filter() 메소드를 이용한 풀이

function solution(arr) {
    // 요소들 중에 자신의 바로 뒤의 요소와 값이 다른 요소만 필터링한다.
	return arr.filter((el, idx) => el !== arr[idx + 1]);
}
profile
개발 공부 기록 블로그

0개의 댓글