연속된 문자열, 숫자를 비교하는 문제를 풀 때마다 헷갈려서 정리해두고자 글을 작성하게 되었다.
function solution(arr)
{
let i = 0
const answer = []
while(true){
//i가 마지막 인덱스까지 왔을 때 종료
if(i==arr.length-1){
answer.push(arr[i])
break
}
if(arr[i]===arr[i+1]){
i += 1
}else{
answer.push(arr[i])
i+=1
}
}
return answer
}
완전탐색을 해야하는 문제이다.
i를 하나씩 증가시키며, arr[i]와 arr[i+1]과 비교.
같으면 i만 증가시키고, 다르면 arr[i]값 새배열에 push하고 i 증가시킴.
(연속으로 중복된 값 하나만 남기면 되기 때문에, 같은 값일
때 다음 비교로 넘어가고, 다른 값 만났을 때 - 더 이상같은 값이 없을 경우- 중복 값을 answer에 push)
i값이 마지막 인덱스 일 때, 마지막 값 추가해주고 종료.
return arr.filter((v,i)=>v!==arr[i+1])
위의 방식과 같은 원리이다.
i가 마지막 인덱스일 때, arr[i+1]은 undefinded이기 때문에, 항상 true가 return 된다.
어떻게 문제를 풀 것인지 확실히 하고 코드 작성하자