같은 숫자는 싫어

GY·2021년 7월 11일
0
post-thumbnail

Code

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

과정

  1. 전 인덱스의 값과 현 인덱스의 값이 같으면 전 인덱스 값 제거
  2. 전 인덱스의 값과 현 인덱스의 값이 다르면 다음으로 넘어가기
    arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return

1,1비교 => 1제거
1,3비교=> 다음으로 넘어가기
3,3비교=> 3제거

단, 배열에서 값을 제거하면 인덱스가 변할 수 있으니, 방법을 조금 바꿔보자.

  1. [i-1]의 값이 [i]의 값과 같으면 넘어가기 (i++)
  2. [i-1]의 값이 [i]의 값과 다르면 [i-1]의 값을 새 배열에 push

예)

1,1비교=> 넘어가기
1,3비교 => 1을 새 배열에 넣기
3,3비교 => 넘어가기
3,0비교 => 3을 새 배열에 넣기

//Test
for (i=0;i<arr.length;i++){
if(arr[i-1]!=arr[i]){console.log(arr[i-1])}}

                     
                     
VM375:2 undefined
VM375:2 1
VM375:2 3
VM375:2 0

마지막 값은 리턴되지 않았다. 1,1이 연속으로 같은 값인데, 비교할 다음 값이 없기 때문이다.

for (i=0;i<arr.length;i++){
if(arr[i]!=arr[i+1]){console.log(arr[i])}}

                     
                     
VM447:2 1
VM447:2 3
VM447:2 0
VM447:2 1
function solution(arr)
{
    var answer=[]
    for (i=0;i<arr.length;i++){
        if(arr[i]!=arr[i+1]){
            answer.push(arr[i])
        }
    }
    
    
    return answer;
}
undefined
var arr = [1, 1, 3, 3, 0, 1, 1]
undefined
solution(arr)
(4) [1, 3, 0, 1]
var arr2 = [4, 4, 4, 3, 3]
undefined
solution(arr2)
(2) [4, 3]

profile
Why?에서 시작해 How를 찾는 과정을 좋아합니다. 그 고민과 성장의 과정을 꾸준히 기록하고자 합니다.

0개의 댓글