알고리즘

[알고리즘] 동일한 숫자 개수 세기(+동일한 문자의 개수)

seulhasony 2023. 5. 29. 13:26

N으로 들어온 숫자까지 K가 몇개 있는지 확인하는 알고리즘이다.

 

예) N = 25, K =2 일 경우

2,12,20,21,22,23,24,25를 카운트 하면 된다. 

그러나, 여기서 22는 1번으로 카운트가 아닌 2번으로 카운트되어야 하는 것이 핵심이다.

 

문제 풀이

import java.util.*;
class Solution {
    public int solution(int N, int K) {
        int answer = 0;
        String num = "";
        char num2 = (char)(K+'0');
        List<String> numList = new ArrayList<String>();

        for(int i =1; i<=N; i++){
            numList.add(Integer.toString(i));
        }

        for(int j = 0; j < numList.size(); j++){
            num = numList.get(j);

            answer += cntChar(num,num2);   
        }
        return answer;
    }
    public static int cntChar(String str, char ch) {
        return str.length() - str.replace(String.valueOf(ch), "").length();
    }
}

 

숫자를 문자열로 변환하여 문자로 비교하는 알고리즘을 구현했다.

 

문자열의 길이 -  동일한 문자를 빈문자열로 대체한 문자열의 길이 = 문자열이 비교한 문자를 갖고 있는 개수

즉, 22의 문자길이 2가 동일한 문자 2를 빈문자열로 대체하게 되면 길이가 0이 된다. 2-0=2 

2를 갖는 22의 문자개수는 2개가 된다.  ***cntChar()메소드를 참고바람