그동안 블로그에 글은 많이 적지 않았지만, 꾸준히 알고리즘 공부를 하고 있다!
회사 업무를 하며 하루 몇 강씩이라도 들으니 그래도 뿌듯하고 재밌다.
오늘을 시작으로 그동안 작성했던 Javascript 코드를 하나씩 올려 볼까 한다.
function countUniqueValues(arr) {
let a = 0;
let b = a + 1;
let uniqueValues = 0;
while (b < arr.length + 1) {
if (arr[a] !== arr[b]) {
uniqueValues++;
a++;
b++;
} else {
a++;
b++;
}
}
return uniqueValues;
}
countUniqueValues([0,1,2,2,3])
확인해 보니 이게 6월 초에 작성한 코드였어서 감회가 좀 새로웠다. 세월 뭐지...
- 코드를 작성한 목적: array 안에 unique value들이 얼마나 있는지 찾기
- 핵심 키워드: 포인터를 두 개 사용
포인터를 두 개 사용해서 index가 1 차이나는 바로 옆 element들을 비교하고
- 다르면 uniquevalue에 +1
- 같으면 변화 없음
위와 같은 조건을 걸었다.
말 그대로 while문이 다 돌 때까지 값들을 하나씩 하나씩 비교하는 함수인데, 그러다 보니 시간복잡도는 O(n)이 되겠다.
오늘은 여기까지 아카이빙 하고, 야근을 하러 가 봐야 해서... 내일도 작성해 둔 코드를 올리려고 한다.
화이팅이다...
'개발 일기' 카테고리의 다른 글
[Programmers] 이름이 있는 동물의 아이디 (0) | 2023.09.13 |
---|---|
[Javascript] pass by reference 힘차게 등장~! (0) | 2022.10.09 |
[Javascript] 아니 그래서 왜 filter method 안에 return이 있어야 하는 건데? (0) | 2022.10.09 |
[Javascript] 힘내자 진짜... (0) | 2022.10.07 |
[Javascript] 문제 틀렸어!!!!!!!!!!!!!!!! (0) | 2022.10.04 |