[프로그래머스] k의 개수

eunbi·2022년 12월 27일
0

알고리즘 문제 풀이

목록 보기
18/18
post-thumbnail

🔍 k의 개수

1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.

제한사항

1 ≤ i < j ≤ 100,000
0 ≤ k ≤ 9


🤔 풀이

  • 어떠한 정수(int) N에 k가 있는지 확인하는 방법 : 정수 N의 각 자릿수 중 k가 있는지 확인해야한다.
    • (N%10)일의 자리수부터 k인지 확인한다.
    • (N/10)확인한 일의 자릿수의 값을 없앤다.
    • 위 과정을 N 이 0 보다 클 동안 반복한다.
    • (→수가 100,000 일 때, 해당 과정을 6번 반복)
  • j - i 가 최대 99,999(=100,000) 이므로, 숫자에 k가 있는지 확인하는 과정을 포함한 총 연산 횟수는 100,000*6 = 600,000번

📝 코드

#include <string>
#include <vector>

using namespace std;

int solution(int i, int j, int k) {
    int answer = 0;

    for (; i <=j; i++) {
        int num = i;
        while (num>0) {
            if (num%10 == k) {
                ++answer;
            }

            num = num/10;
        }
    }

    return answer;
}

0개의 댓글