Baekjoon Online Judge
14912번: 숫자 빈도수
자연수 n (1 ≤ n ≤ 100,000)과 한 자리 숫자 d(0~9)가 첫째 줄에 주어진다.
www.acmicpc.net
[문제]
1부터 n까지 차례대로 써 내려갈 때 특정 숫자(digit)의 빈도수를 구하여 출력하는 프로그램을 작성하시오.
예를 들어, n = 11 이고 숫자 1의 빈도수를 구하라고 하면, 1 2 3 4 5 6 7 8 9 10 11 에서 숫자 1은 1에서 한 번, 10에서 한 번, 11에서 두 번 나타나므로 1의 빈도수는 총 4 이다.
[입력]
자연수 n (1 ≤ n ≤ 100,000)과 한 자리 숫자 d(0~9)가 첫째 줄에 주어진다.
[출력]
첫째 줄에 빈도수를 출력한다.
[풀이]
임시 변수 tmp에 i를 대입하고 tmp가 0보다 클 동안에만 while문을 반복한다.
tmp를 10으로 나누었을 때 나머지가 d와 같다면 빈도수를 구하는 변수 cnt를 1 증가시킨다.
tmp의 모든 자릿수를 d와 비교할 수 있도록 tmp에는 tmp를 10으로 나눈 값을 대입한다.
[코드]
#include <iostream>
using namespace std;
int main()
{
int n, d, cnt = 0;
cin >> n >> d;
for (int i = 1; i <= n; i++)
{
int tmp = i;
while (tmp > 0)
{
if (tmp % 10 == d)
cnt++;
tmp /= 10;
}
}
cout << cnt << '\n';
return 0;
}
'Baekjoon > C++' 카테고리의 다른 글
[C++][BOJ/백준] 2783 삼각 김밥 (0) | 2024.01.25 |
---|---|
[C++][BOJ/백준] 23037 5의 수난 (0) | 2024.01.17 |
[C++][BOJ/백준] 10996 별 찍기 - 21 (0) | 2024.01.15 |
[C++][BOJ/백준] 1181 단어 정렬 (0) | 2024.01.14 |
[C++][BOJ/백준] 2941 크로아티아 알파벳 (2) | 2024.01.13 |