Home 230204_Algorithm | 같은 숫자는 싫어(Lv.1)
Post
Cancel

230204_Algorithm | 같은 숫자는 싫어(Lv.1)

같은 숫자는 싫어 (Lv.1)


문제 설명

  • 주어진 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있음
  • 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야함
  • 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성


제한사항

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


입출력 예시

arranswer
[1,1,3,3,0,1,1][1,3,0,1]
[4,4,4,3,3][4,3]


1
2
3
4
5
6
7
8
9
10
11
12
function solution(arr) {
  var answer = [];

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === arr[i + 1]) {
    } else {
      answer.push(arr[i]);
    }
  }

  return answer;
}




나름 풀이

  • 반복문 돌려서 다음 인덱스의 값과 같은지 비교 후
    • 같으면 값을 받아오지 않고
    • 다르면 값을 가져옴

+ 처음에 set 사용해서 중복 요소를 다 지우는 것으로 했으나, 문제에서는 연속되는 중복된 숫자만 지워라고 되어있음


===

다른 분의 풀이

1
2
3
function solution(arr) {
  return arr.filter((val, index) => val != arr[index + 1]);
}




위 풀이에 대한 설명

  • arr.filter((number, index, source) =>{})
    • number : 요소값
    • index : source에서 요소의 index
    • source : 순회하는 대상

이 문제에서는

  • val : 요소값
  • index : 요소의 index값

→ 요소와 그 다음 요소의 값이 같지 않은지 비교한 뒤 → 같지 않으면 filter에서 내보내줌

This post is licensed under CC BY 4.0 by the author.