프로그래머스.k의 개수

남궁진 (jinvicky)·2026년 4월 1일

Problem


https://school.programmers.co.kr/learn/courses/30/lessons/120887

Solution


Missing

문제를 풀던 도중에 간과한 사실이 있었다. 숫자에서 k 숫자가 1개 이상 포함될 수 있다는 사실이다. 단순히 포함 여부만 따지면 테스트 케이스를 통과할 수 없다.

(char)(k + '0')의 의미

이 코드는 정수 k를 문자(char)로 변환하는 트릭이다.

'0'은 문자지만 내부적으로는 아스키 코드 값 48을 가진다.

예를 들면 k=3일 때 k+ '0' = 3 + 48 = 51 -> (char) 51 = '3'이다.

내가 왜 gpt의 도움을 받아서 이렇게 했냐면

st.charAt(h)의 결과 타입은 char인데 k는 int이기 때문이다.
여기서는 값을 형변환해서 직접 사용하는 것이 아니라 두 값이 일치하는 가 여부를 보는 것이기 때문에 정수인 k를 char로 형변환해서 비교했다.

Code


class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
        
        for (int t = i; t <=j; t++) {
            String st = Integer.toString(t);
            String sk = Integer.toString(k);
            
            if(st.contains(sk)) { // 11 같은 케이스는 += 2여야 함. 
               for(int h= 0; h < st.length(); h++) {
                   if(st.charAt(h) == (char)(k + '0')) {
                       answer++;
                   }
               }
            }
        }
        return answer;
    }
}
profile
문제를 차근차근 하나씩 해결하려고 합니다:)

0개의 댓글