1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.
k를 문자열로 바꾼 다음, 반복문을 통해서 (여기서 평소쓰던 int i 값 아닌, int l값으로) 문자열로 바꾼 l값이 k값을 포함하고 있다면 answer에 더해주자!
class Solution {
public int solution(int i, int j, int k) {
int answer = 0;
String kStr = String.valueOf(k); //k를 string로 변환
for(int l = i ; l <= j ; l++){
String lStr = String.valueOf(l); //l을 string으로 변환
if(lStr.contains(kStr)){
answer++ ;
}
}
return answer;
}
}
다른 테스트에서는 성공했는데, 1의 테스트에서 1,10,11,12,13이 1을 포함하는데
여기서 11에서 1이 2번 들어간걸 포함하지 못했다!
-> 배열로 쪼개서 1이 두번 반환되게 해야한다...
class Solution {
public int solution(int i, int j, int k) {
int answer = 0;
String kStr = String.valueOf(k); //k를 string로 변환
for(int l = i ; l <= j ; l++){
String lStr = String.valueOf(l); //l을 string으로 변환
if(lStr.contains(kStr)){
String[] Array = lStr.split(""); //k를 포함하는 l값을 배열로 만들기
for(String strArray : Array){ //배열을 문자열로 변환
if (strArray.equals(kStr)) answer++;
}
}
}
return answer;
}
}
똑같은 k가 두번 들어간 수까지 카운트해야하는거 관건이었다.
String strArray : Array 통해서 배열을 for문 안에서 문자열로 바꾼다음
contain말고 equals를 사용하는게 주된 포인트..!