본문 바로가기
코딩테스트/프로그래머스 입문

[코딩테스트 Lv.0] k의 개수

by 블루데이제이 2024. 3. 12.
728x90
반응형
문제 설명

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
입출력 예 설명
입출력 예 #1
본문과 동일합니다.

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

입출력 예 #3
3부터 10까지 2는 한 번도 등장하지 않으므로 0을 return 합니다.

내 풀이
Java
class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
 
        for(int a = i; a <= j; a++){
            int b = a;
            while(true){
                if(b == 0) break;
                if(b % 10 == k) answer++;
                b /= 10;
            }
        }
        
        return answer;
    }
}

class Solution {
    public int solution(int i, int j, int k) {
        int answer = 0;
        
        String n = String.valueOf(k);
        for(int a = i; a <= j; a++){
            String v = String.valueOf(a);
            if(v.contains(n)){
                String[] arr = v.split("");
                for(String m : arr){
                    if(m.equals(n)) answer++;
                }
            }
        }
        
        return answer;
    }
}
C
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int i, int j, int k) {
    int answer = 0;
    char n = k + '0';
    
    for(int a = i; a <= j; a++){
        int b = a;
        while(1){
            if(b == 0) break;
            if(b % 10 == k) answer++;
            b /= 10;
        }
    }
    
    return answer;
}
Python
def solution(i, j, k):
    answer = 0

    for a in range(i, j + 1):
        b = a
        while True:
            if b == 0:
                break
            if b % 10 == k:
                answer += 1
            b = int(b / 10)
    return answer

def solution(i, j, k):
    answer = 0
    
    for a in range(i, j + 1):
        v = str(a)        
        if str(k) in v:            
            arr = list(v)            
            for b in arr:                
                if int(b) == int(k):                    
                    answer += 1
   
    return answer
728x90
반응형