본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - k의 개수

by nam_ji 2024. 11. 11.

k의 개수 - LV.0

문제


테스트 (인텔리제이)

public class k의_개수 {
    public static void main(String[] args) {
        /*
        정수 i, j, k가 매개변수로 주어집니다.
        i부터 j까지의 수 중에서 k가 몇 번 등장하는지 구하는 문제입니다.
        예를 들어 1부터 13까지의 수 중에서
        1은 1, 10, 11, 12, 13으로 총 6번 등장합니다.

        제한사항
        - 1 ≤ i < j ≤ 100,000
        - 0 ≤ k ≤ 9

        입출력 예
        i	j	k	result
        1	13	1	6
        10	50	5	5
        3	10	2	0

        입출력 예 설명
        #1
        본문과 동일합니다.

        #2
        10부터 50까지 5는 15, 25, 35, 45, 50 총 5번 등장합니다. 따라서 5를 return 합니다.

        #3
        3부터 10까지 2는 한 번도 등장하지 않으므로 0을 return 합니다.
         */
        int i = 10;
        int j = 50;
        int k = 5;

        solution1(i, j, k);
        solution2(i, j, k);
        solution3(i, j, k);
    }

    public static void solution1(int i, int j, int k) {
        int answer = 0;

        for (int n = i; n <= j; n++) {
            for (char c : (n+"").toCharArray()) {
                if (Integer.parseInt(String.valueOf(c)) == k) {
                    answer++;
                }
            }
        }

        System.out.println(answer);
    }

    public static void solution2(int i, int j, int k) {
        StringBuilder str = new StringBuilder();

        for (int n = i; n <= j; n++) {
            str.append(n);
        }

        System.out.println(str.length() - str.toString().replace(k+"", "").length());
    }

    public static void solution3(int i, int j, int k) {
        int answer = 0;

        for (int n = i; n <= j; n++) {
            int temp = n;
            while (temp != 0) {
                if (temp % 10 == k) {
                    answer++;
                }
                temp /= 10;
            }
        }

        System.out.println(answer);
    }
}

프로그래머스 코드

class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
        
        for (int n = i; n <= j; n++) {
            for (char c : (n+"").toCharArray()) {
                if (Integer.parseInt(String.valueOf(c)) == k) {
                    answer++;
                }
            }
        }
        
        return answer;
    }
}

// class Solution {
//     public int solution(int i, int j, int k) {
//         StringBuilder str = new StringBuilder();
        
//         for (int n = i; n <= j; n++) {
//             str.append(n);
//         }
        
//         return str.length() - str.toString().replace(k+"", "").length();
//     }
// }

// class Solution {
//     public int solution(int i, int j, int k) {
//         int answer = 0;
        
//         for (int n = i; n <= j; n++) {
//             int temp = n;
//             while (temp != 0) {
//                 if (temp % 10 == k) {
//                     answer++;
//                 }
//                 temp /= 10;
//             }
//         }
        
//         return answer;
//     }
// }