k의 개수

nacSeo (낙서)·2024년 5월 16일
0

프로그래머스

목록 보기
167/169

문제 설명

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

나의 코드

class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
        for(int a=i; a<=j; a++) {
            String numStr = String.valueOf(a);
            for(int b=0; b<numStr.length(); b++) {
                if(numStr.charAt(b)==k+'0') answer++;
            }
        }
        return answer;
    }
}

다른 사람 코드

class Solution {
    public int solution(int i, int j, int k) {
        String str = "";
        for(int a = i; a <= j; a++) {
            str += a+"";
        }

        return str.length() - str.replace(k+"", "").length();
    }
}

length()replace()함수를 사용한 방법

class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;

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

문자열로 변경하지 않고, 정수로 풀이하는 방법

느낀 점

주어진 정수타입을 문자열로 변경하여 문자열 각각의 char값을 비교해주며 해결
다른 사람 코드처럼 정수인 채로 10으로 계속 나누어가며 나머지값을 통해 구해주는 방법도 있고, 다양한 함수들을 활용하여 해결하는 참신한 방법도 존재했다 😮

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글