[LeetCode] 1295. Find Numbers with Even Number of Digits

최대 1 분 소요

LeetCode - 1295. Find Numbers with Even Number of Digits 알고리즘 문제 풀이

분류

문제 링크 : https://leetcode.com/problems/find-numbers-with-even-number-of-digits/

풀이

정수 벡터가 주어질 때 벡터 원소의 길이가 짝수인 숫자가 몇 개인지 반환하면 된다.

nums[i]의 최댓값이 10^5이므로 100000을 d라고 했을 때, d와 d를 10으로 나눈 값으로 각 원소의 값이 나누어지는지 확인하면서 원소 길이(len)를 구하고 그때의 원소 길이가 짝수인지 확인하였다.

아래는 문제 이해에 도움을 주는 예제이다.

Input: nums = [12,345,2,6,7896]
Output: 2
Explanation: 
12 contains 2 digits (even number of digits). 
345 contains 3 digits (odd number of digits). 
2 contains 1 digit (odd number of digits). 
6 contains 1 digit (odd number of digits). 
7896 contains 4 digits (even number of digits). 
Therefore only 12 and 7896 contain an even number of digits.

소스 코드

class Solution {
public:
    int findNumbers(vector<int>& nums) {
        int ans = 0;
        for (int elem : nums) {
            int d = 100000;
            int len = 6;
            while (d != 0) {
                if (elem / d != 0) {
                    break;
                }
                d /= 10;
                --len;
            }
            if ((len & 1) == 0) {
                ++ans;
            }
        }
        return ans;
    }
};

카테고리:

업데이트: