개발자/프로그래머스 알고리즘
코딩테스트 연습 - 같은 숫자는 싫어 | 프로그래머스 js ★★★☆☆
YoungDogg
2022. 1. 11. 14:11
코딩테스트 연습 - 같은 숫자는 싫어 | 프로그래머스 (programmers.co.kr)
코딩테스트 연습 - 같은 숫자는 싫어
배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은
programmers.co.kr
1차 시도
function solution(arr) {
let answer = [];
// 연속으로 오는 요소를 while(true)로 찾고 없다면 다음 요소로 넘어간다
for (let i = 0; i < arr.length - 1; i++) {
//이중 반복문, 재귀는 너무 느리고 다른 거 없나
let insideI = i;
while (true) {
// 이중 반복문으로 타협하자
if (arr[insideI] === arr[insideI + 1]) {
// 만약 둘이 같다면 자기 자리를 삭제
arr.splice(i, 1);
} else {
break;
}
}
}
answer = arr;
return answer;
}
이중 반복문으로 풀어봤다. 시간초과가 떴다.
2차 시도
set을 써봤다.
function solution(arr){
let answer =[];
let mySet = new Set(arr);
answer = mySet;
return answer;
}
console.log(solution([1,1,3,3,0,1,1]))
순서를 처리할 수가 없었다.
3차 시도 잘 됐다.
function solution(arr) {
let answer = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] !== arr[i + 1]) {
// 만약 둘이 다르다면 answer에 넣는다.
answer.push(arr[i]);
}
}
return answer;
}
console.log(solution([1, 1, 3, 3, 0, 1, 1])); // [ 1, 3, 0, 1 ]
//성공
다른 사람 것을 봤다.
더 잘한 것이 있는지 확인
function solution(arr)
{
return arr.filter((val,index) => val != arr[index+1]);
}
filter를 썼다.
filter를 생각하지 못했다.
filter에 대해 공부해보자
Filter란 :: YoungDogg (tistory.com)
4차 시도
function solution(arr) {
return arr.filter((val, index) => {
if (arr[index] !== arr[index + 1]) {
return arr[index];
}
});
}
console.log(solution([1,1,3,3,0,1,1])); // [ 1, 3, 1 ] 실패
function solution(arr) {
let answer = [];
return arr.filter((val, index) => {
if (arr[index] !== arr[index + 1]) {
answer.push(arr[index]);
return answer;
}
});
} // 성공
성공