-
[BOJ / C++] 14912번 : 숫자 빈도수Study (etc)/Problem Solving 2022. 10. 6. 10:13
문제
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)가 첫째 줄에 주어진다.
출력
첫째 줄에 빈도수를 출력한다.
Solved.ac 레벨
실버 V
풀이
#include <bits/stdc++.h> using namespace std; int n, d, cnt; int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n >> d; for(int i = 1; i <= n; i++){ string tmp = to_string(i); for(int j = 0; j < tmp.length(); j++){ if(tmp[j] == d + '0'){ cnt++; } } } cout << cnt << '\n'; return 0; }
1. 1에서부터 N까지 증가시키며, 문자열로 변환해서 저장해준다
2. 해당 문자열의 길이대로 인덱싱하며 빈도수를 구하려는 숫자의 개수를 센다.
🤩 간단하게 int를 char로 변환하려면 정수 + '0'을 해주면 된다.
쉽게 풀 수 있는 브루트 포스 알고리즘 문제였다.
14912번: 숫자 빈도수
자연수 n (1 ≤ n ≤ 100,000)과 한 자리 숫자 d(0~9)가 첫째 줄에 주어진다.
www.acmicpc.net
'Study (etc) > Problem Solving' 카테고리의 다른 글
[BOJ / C++] 16212번 : 정열적인 정렬 (0) 2022.10.11 [BOJ / C++] 24155번 : 得点 (Score) (0) 2022.10.08 [BOJ / C++] 14495번 : 피보나치 비스무리한 수열 (0) 2022.10.06 [BOJ / C++] 1817번 : 짐 챙기는 숌 (0) 2022.10.01 [BOJ / C++] 5347번 : LCM (1) 2022.09.30