같은 숫자는 싫어 (Lv.1)
문제 설명
- 주어진 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있음
- 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야함
- 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성
제한사항
- 배열 arr의 크기 : 1,000,000 이하의 자연수
- 배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수
입출력 예시
arr | answer |
---|---|
[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에서 내보내줌