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)가 첫째 줄에 주어진다.
첫째 줄에 빈도수를 출력한다.
11 1
4
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int number = Integer.parseInt(input[0]);
char digit = input[1].charAt(0);
String s;
int count = 0;
for(int i=1; i<=number; i++) {
s = Integer.toString(i);
for(int j=0; j<s.length(); j++) {
if(s.charAt(j)==digit) {
count++;
}
}
}
System.out.print(count);
}
}
제출한 사람들을 보니 수학으로 대부분 풀었다... 수학으로 전혀 풀 생각 안 했는데 생각해보니 수학으로 풀어도 매우 간단하겠구만,,, 근데 문자열로 풀어도 매우 간단하니까~ 하지만 요즘 풀이하는 걸 보면 수학적으로 접근을 너무 안 하는 것 같으니 수학적으로 접근하는 습관도 좀 가져야 할 듯