프로그래머스/Lv. 0(코딩테스트 입문)

[프로그래머스 코딩테스트] k의 개수(Java)

Sigfriede 2023. 4. 21. 16:13

  문제 설명

  1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.

 

  제한사항

  • 1 <= i < j <= 100,000
  • 0 <= k <= 9

 

  입출력 예

i j k result
1 13 1 6
10 50 5 5
3 10 2 0
class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
        for (int a = i; a <= j; a++) {
            int n = a;
            while (n > 0) {
                int num = n % 10;
                if (num == k) {
                    answer++;
                }
                n /= 10;
            }
        }
        return answer;
    }
}

  for문이 i부터 j까지 순회합니다. int n = a로, 이후 while문에서 자릿수 구하는 연산으로 바뀌는 숫자를 초기화 해줍니다. 초기화하지 않으면 무한 루프에 빠집니다.

  while문은 n이 0보다 클 때 반복합니다. num 변수는 n의 자릿수를 하나씩 할당받아, if (num == k)를 통해 num과 k가 같은지 비교할 것입니다. 만약 같다면 answer가 1씩 증가합니다. 이러한 반복을 통해, 문제에서 제시한 i부터 j까지 k가 등장하는 횟수를 계산합니다.