[백준] 14912 숫자 빈도수 JAVA

·2024년 3월 14일

1일1백준 -Java-

목록 보기
53/60

문제

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

내가 했던 풀이 방법

  1. 입력받은 자연수와 한 자리 숫자를 자연수는 int로 한 자리 숫자는 char로 저장해준다.
  2. 1부터 자연수까지 for문을 돌리는데 i를 String으로 바꿔준다.
  3. i에 한 자리 숫자가 포함된만큼 count를 증가시켜준다.

코드

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);
    }   
}

회고

제출한 사람들을 보니 수학으로 대부분 풀었다... 수학으로 전혀 풀 생각 안 했는데 생각해보니 수학으로 풀어도 매우 간단하겠구만,,, 근데 문자열로 풀어도 매우 간단하니까~ 하지만 요즘 풀이하는 걸 보면 수학적으로 접근을 너무 안 하는 것 같으니 수학적으로 접근하는 습관도 좀 가져야 할 듯

profile
Frontend🍓

0개의 댓글