n개의 요소가 있는 배열 A와 또 다른 숫자 x가 있다고 가정합니다. 우리는 행운의 숫자가 10진수 표현에 행운의 숫자 4와 7만 포함된 양수라는 것을 알고 있습니다. 주어진 n개의 양의 정수를 형성하십시오. 그 중 k개 이하의 행운의 숫자가 몇 개나 있는지 세어야 합니까?
따라서 입력이 A =[44, 74, 474, 154]와 같으면; k =2이면 3개의 행운의 숫자 44, 74, 474가 있지만 474는 k보다 큰 3개의 행운의 숫자가 있기 때문에 출력은 3이 됩니다. 또한 154에는 허용되는 행운의 숫자가 하나 있습니다.
단계
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
n := size of A f := 0 for initialize i := 0, when i < n, update (increase i by 1), do: c := 0 while A[i] is not equal to 0, do: if A[i] mod 10 is same as 4 or A[i] mod 10 is same as 7, then: (increase c by 1) A[i] := A[i] / 10 if c <= k, then: (increase f by 1) return f
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#include<bits/stdc++.h> using namespace std; int solve(vector<int> A, int k){ int n = A.size(); int f = 0; for (int i = 0; i < n; ++i){ int c = 0; while (A[i] != 0){ if (A[i] % 10 == 4 || A[i] % 10 == 7) c++; A[i] /= 10; } if (c <= k) f++; } return f; } int main(){ vector<int> A = {44, 74, 474, 154}; int k = 2; cout << solve(A, k) << endl; }
입력
{44, 74, 474, 154}, 2
출력
3