[easy] Find Numbers with Even Number of Digits

문제 : 

정수 배열이 주어졌을 때, 그 중 짝수의 자릿수 nums가 포함된 정수의 수를 반환합니다.

 

Example 1 :

Input: nums = [12,345,2,6,7896]
Output: 2
Explanation:
12는 2자리(짝수 자릿수)를 포함합니다. 
345는 3자리(홀수 자릿수)를 포함합니다. 
2는 1자리(홀수 자릿수)를 포함합니다. 
6은 1자리(홀수 자릿수)를 포함합니다. 
7896은 4자리(짝수 자릿수)를 포함합니다. 
따라서 12와 7896만 짝수 자릿수를 포함합니다.

 

Example 1 :

Input: nums = [555,901,482,1771]
Output: 1
Explanation:
1771에만 짝수 자릿수가 있습니다.

 

제약 조건 :

  • 1 <= nums.length <= 500
  • 1 <= nums[i] <= 105

 

나의 코드 - 1 ( toString(), for문 사용 )

var findNumbers = function (nums) {
	let result = 0;
    
    for(let i = 0; i < nums.length ; i++){
        let len = nums[i].toString().length;
        if(!(len % 2)) result++;
        
    }
    return result;
}

 

나의 코드 - 2 ( 10으로 나눠서 구하기 )

var findNumbers = function (nums) {
  let result = 0;

  for (let i = 0; i < nums.length; i++) {
    let ret = getResult(nums[i]);
    if (ret) result++;
  }

  return result;
};

const getResult = (n) => {
  let ret = false;
  while (n >= 10) {
    n = n / 10;

    ret = !ret;
  }
  return ret;
};

 

코드를 돌렸을 때 성능, 메모리 면에서 방법 2가 더 좋았다.

 

'leetCode > Array 101' 카테고리의 다른 글

[easy] Max Consecutive Ones  (3) 2022.04.29