DEVLOG
프로그래머스 알고리즘#12 - 같은 숫자는 싫어 본문
728x90
반응형
<문제>
<풀이>
function solution(arr)
{
var answer = [];
arr.forEach((item)=>{
if(answer.includes(item)) return;
answer.push(item);
})
return answer;
}
처음엔 이렇게 생각을 했었다.
새로만드는 배열안에 이미 넣은 수가 있다면? 건너뛰고 다음 수를 push!
하지만 문제는 안에 있는 수를 다 건너뛰는게 아니라 연속되는 수만 건너뛰어야하기때문에 문제에 맞지 않는다.
function solution(arr)
{
var answer = [];
var c=0;
arr.forEach((item,i)=>{
if(answer[c-1]==item) return;
answer.push(item);
c++;
})
return answer;
}
그래서 그 다음으로 생각한게 c라는 변수를 따로 두어서 answer이라는 새 배열의 index를 따로 계산하고
그 index보다 하나 앞의 수가 지금 넣으려는 수와 같다면 건너뛰기라고 생각해서
문제를 해결했다.
하지만.. 쓸데없이 새로 만드는 변수가 조금 거슬렸다
더 간단하게 만들고싶다!
그래서 다른 사람들의 풀이를 봤더니 역시..궁금증이 바로 해결되었다.
바로 anwer의 length를 사용하는것!! 이를 사용해서 내 코드를 수정해보았다.
function solution(arr)
{
var answer = [];
arr.forEach((item,i)=>{
if(answer[answer.length-1]==item) return;
answer.push(item);
})
return answer;
}
별거아니지만 훨씬 깔끔해졌다!
+다른사람들 코드
function solution(arr)
{
return arr.filter((val,index) => val != arr[index+1]);
}
오..filter...엄청 간단하네..하지만 난 내 코드도 조왕....
728x90
반응형
'dev log > algorithm' 카테고리의 다른 글
프로그래머스 알고리즘#14 - 두 개 뽑아서 더하기 (0) | 2020.12.21 |
---|---|
프로그래머스 알고리즘#13 - 3진법 뒤집기 (0) | 2020.12.21 |
프로그래머스 알고리즘#11 - 가운데 글자 가져오기 (0) | 2020.12.18 |
프로그래머스 알고리즘#10 - 나누어 떨어지는 숫자 배열 (0) | 2020.12.18 |
프로그래머스 알고리즘#9 - 두 정수 사이의 합 (0) | 2020.12.18 |
Comments