Programmers에서 sql을 풀고 나서 알고리즘을 도전중이다.
실행 & 테스트 환경이 편한 장점이 있다.
링크
https://school.programmers.co.kr/learn/courses/30/lessons/12906
// 내가 짠 코드. 정확성 통과, 효율성 실패.
function solution(arr)
{
let answer = [];
for(let i = 0; i < arr.length; i++) {
if(answer.length < 1) { //length가 0이면 push
answer.push(arr[i]);
} else {
let isSame = false;
for(let j = 0; j < answer.length; j++) {
isSame = answer[j] === arr[i];
}
if (!isSame) {
answer.push(arr[i]);
}
}
}
return answer;
}
정확성에서는 맞았으나 효율성 측면에서 실패했다.
연속된 숫자의 중복을 제거하는 것이었는데 전체 중복 제거라고 생각했던 것이 잘못이었고, 심지어 의도한 대로 풀이하는 것도 실패했다;;
효율성까지 고려한 정답은 아래와 같다.
//현재 idx와 idx+1번째 요소를 비교한다.
function solution(arr)
{
var answer = [arr[0]];
for(let i = 1; i < arr.length ; i++) {
if(arr[i-1] !== arr[i]) answer.push(arr[i]);
}
return answer;
}
// filter 내장 함수를 사용한다.
function solution(arr)
{
return arr.filter((val,index) => val != arr[index+1]);
}
filter()를 사용한 방법이 흥미로웠다.