본문 바로가기

개발 일기

[Javascript ] 알고리즘 - countuniquevalues

그동안 블로그에 글은 많이 적지 않았지만, 꾸준히 알고리즘 공부를 하고 있다!

회사 업무를 하며 하루 몇 강씩이라도 들으니 그래도 뿌듯하고 재밌다.

 

오늘을 시작으로 그동안 작성했던 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)이 되겠다. 

 

오늘은 여기까지 아카이빙 하고, 야근을 하러 가 봐야 해서... 내일도 작성해 둔 코드를 올리려고 한다.

 

화이팅이다...