FireDrago

Lv0 - k의 개수 (자바) 본문

카테고리 없음

Lv0 - k의 개수 (자바)

화이용 2023. 6. 12. 12:06

문제설명

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

 

입출력예

i j k result
1 13 1 6
10 50 5 5
3 10 2 0

 

생각정리

 

1. int 값을 자릿수마다 검사해야 하는데 int 형의 자릿수 검사는 너무 복잡하다 . (10 나누면서 나머지 값 조사)

2. String 으로 형변환해서 검사하는게 더 편하겠다. 

3. 문제는 String으로 형변환 해도 char 로 떼어내서 하나씩 검사해야 하는데 이것도 만만치 않았다. 

4. StringBuilder 가 필요하다. 

  - append( ) 메서드는 int값을 넣을때도 String으로 자동변환한다. 

  - 꺼낼때도 .charAt( ) 으로 바로 char 로 꺼낼 수 있다. 

5. char - '0'   int 자동 형변환 사용  (char ,byte, short 은 연산시 int 자동 형변환) 

public int solution(int i, int j, int k) {
    int answer = 0;
    StringBuilder sb = new StringBuilder();

	// int를 String 덩어리로 합치기
    for (int l = i; l<=j; l++) {
        sb.append(l); 
    }
	
     //char 로 꺼내서 int 형변환후 k 비교
    for (int m =0; m<sb.length(); m++) {
       if((sb.charAt(m)-'0')==k){
           answer++; 
       }
    }
    return answer;
}