알고리즘/[ Baekjoon ]

[ BOJ ][JAVA][11170] 0의 개수

kim.svadoz 2021. 5. 24. 17:29
반응형

https://www.acmicpc.net/problem/11170

 

11170번: 0의 개수

N부터 M까지의 수들을 종이에 적었을 때 종이에 적힌 0들을 세는 프로그램을 작성하라. 예를 들어, N, M이 각각 0, 10일 때 0을 세면 0에 하나, 10에 하나가 있으므로 답은 2이다.

www.acmicpc.net

시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
3 초 256 MB 1426 1100 967 79.327%

문제

N부터 M까지의 수들을 종이에 적었을 때 종이에 적힌 0들을 세는 프로그램을 작성하라.

예를 들어, N, M이 각각 0, 10일 때 0을 세면 0에 하나, 10에 하나가 있으므로 답은 2이다.

입력

첫 번째 줄에 테스트 케이스의 수 T가 주어진다.

각 줄에는 N과 M이 주어진다.

  • 1 ≤ T ≤ 20
  • 0 ≤ N ≤ M ≤ 1,000,000

출력

각각의 테스트 케이스마다 N부터 M까지의 0의 개수를 출력한다.

예제 입력 1

3
0 10
33 1005
1 4

예제 출력 1

2
199
0

코드

/*
    0의 개수
    구현
*/
import java.io.*;
import java.util.*;
public class p11170 {
    static int t;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        t = Integer.parseInt(br.readLine());
        while (t-- > 0) {
            st = new StringTokenizer(br.readLine());
            int n = Integer.parseInt(st.nextToken());
            int m = Integer.parseInt(st.nextToken());
            System.out.println(solve(n, m));
        }
    }
    static int solve(int n, int m) {
        int ret = 0;

        for (int i = n; i <= m; i++) {
            ret += calc(i);
        }

        return ret;
    }

    static int calc(int num) {
        int ret = 0;
        for (char c : String.valueOf(num).toCharArray()) {
            if (c == '0') {
                ret++;
            }
        }
        return ret;
    }
}
반응형