PGS stack,queue(스택/큐) 같은 숫자는 싫어 JS

kzts97·2024년 4월 8일

코딩테스트

목록 보기
1/4

https://school.programmers.co.kr/learn/courses/30/lessons/12906

배열arr
배열 arr의 각원소는 숫자0~9
이떄,배열arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부제거.
단,제거된 후 남은 수들을 반환할때는 배열arr의 원소들을 순서를 유지.

예시

  • arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
  • arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.

제한사항

  • 배열 arr의 크기 : 1,000,000 이하의 자연수
  • 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수

문제풀이

function solution(arr){
    var answer = [];
    for(var i = 0; i < arr.length; i++){
        if(arr[i] !== arr[i + 1]){
           answer.push(arr[i]);
        }        
    }
    return answer;
}

주어진 배열에서 연속적으로 중복되는 요소를 제거

  1. 빈 배열 생성 : 함수는 먼저 answer 빈 배열을 생성. 이 배열은 중복되지 않는 요소들을 저장.

  2. for문 : 배열arr의 모든 요소를 순회하기 위해.
    인덱스 i를 0부터 시작하여 arr 배열의 길이보다 작을 때까지 반복.

  1. 연속된 요소 비교 : for문 내, 현재 요소 arr[i]와 다음 요소 arr[i+1]을 비교.
    !== 연산자를 사용하여 두 요소가 값과 타입 모두에서 다른지 확인.
  • 연속적으로 중복되는 요소들은 건너뛰고,
    각 중복 그룹의 첫 번째 요소만이 answer 배열에 저장.
  • 예를 들어, 입력 배열이 [1, 1, 2, 3, 3, 0, 1, 1]이라면, [1, 2, 3, 0, 1]을 반환.

불일치 연산자 (!==)
두 값이 "타입"과 "값" 모두에서 같지 않을 때 true를 반환
즉, 두 값이 다르거나 타입이 다를 때 true를 반환하고, 그렇지 않으면 false를 반환

  1. 중복 제거 및 배열에 추가 : 만약 현재 요소와 다음 요소가 다르다면(연속적 중복이 없다면),
    현재 요소 arr[i]는 중복되지 않은 것으로 판단하여 answer 배열에 추가.

여기서 각 숫자 그룹의 첫 번째 요소만이 결과 배열에 포함되어, 연속적인 중복이 제거된 것을 볼 수 있다.

!== 연산자를 사용하여 엄격한 타입 비교를 함으로써, 값과 타입이 모두 다른 경우에만 요소를 answer 배열에 추가한다는 점입니다. 이로써,연속적인 중복을 효과적으로 제거할 수 있습니다.

profile
hello

0개의 댓글