본문 바로가기
알고리즘

[CodeKata] Week 2 - Day 2 (JavaScript)

by 프린벼르 2022. 2. 26.

코드카타 2주차 문제 2

function moreThanHalf(nums) {
  // 여기에 코드를 작성해주세요.
  let answer = 0;
  let count = 0;
  for (let x of nums) {
      if (count === 0) {
          answer = x;
          count++;
      } else {
          (x === answer) ? count++ : count--;
      }
  }
  return answer;
}

해설

  1. res = 0 , count = 0 으로 초기화 시키기
  2. for..of 문법을 사용한다. for..of는 enumerable(반복되는 열거가능한) 속성을 가지고있는 객체에 대해서 반복 할 수 있다.
    (array, map, set, string)
  3. count가 0일 때, res는 num of nums(처음에는 nums배열의 0번째 인덱스가 됨)으로 초기화가 될 것이고,
    count는 1이 증가한다.
  4. 만약 count가 0이 아닌 경우, num값이 res값과 같으면 count는 1이 증가하게 되고, num값이 res값과 같지 않으면
    카운트는 -1만큼 감소할 것 입니다.
  5. 즉, count가 줄어들어서 0이되면 다시 res값에 num of nums값이 초기화 되니 그럼 그걸로 다시 비교하게 될 것이다.

댓글