FireDrago
Lv0 - k의 개수 (자바) 본문
문제설명
1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, 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;
}
