https://www.acmicpc.net/problem/14912
문제
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)가 첫째 줄에 주어진다.
TOSTRING함수로 string형태로 숫자를 바꿔주고, 찾고자 하는 한 자리 문자와 string의 i (0~문자열 크기)번쨰 문자가 같다면 빈도 수를 증가시키는 방식으로 해결하였다.
#include <iostream>
#include <string>
using namespace std;
int main(void){
int n;
char check;
cin >> n >> check;
int cnt = 0;
for(int i = 1;i<=n;i++){
string str = to_string(i); //string형태로 바꿔주고
for(int j = 0;j<str.size();j++){ //check와 같다면 cnt증가
if(str[j] == check){
cnt++;
}
}
}
cout << cnt;
}
'알고리즘' 카테고리의 다른 글
백준 15924 욱제는 사과팬이야!! (0) | 2022.08.01 |
---|---|
백준 20162 간식 파티 C++ (0) | 2022.07.31 |
백준 2660 회장뽑기 C++ (0) | 2022.07.28 |
백준 5648 역원소 정렬 C++/STOI함수 (0) | 2022.07.24 |
백준 12919 A와 B 2 (0) | 2022.07.24 |