문제 내용은 자연수 N과 찾아야 하는 한 자리 숫자 값 D를 받은 뒤 1부터 N까지의 숫자 중, D가 몇개 들어있는지를 출력해줘야 하는데
예제를 보면 11 1이면 1에서 11까지 생성하되 1, 10, 11 이렇게 1이 포함되어 있는 숫자 3개가 있고, 11에는 1이 두개 들어있으니 4를 출력해주면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] array = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int count = 0;
for (int i = 1; i <= array[0]; i++) {
int val = i;
while (val > 9) {
if (val % 10 == array[1]) {
count++;
}
val = val / 10;
}
if (val == array[1]) {
count++;
}
}
System.out.println(count);
}
}
문제를 풀어보면 직접 쪼개서 비교하는 경우에는 메모리 제한에 걸릴 우려가 있으므로, 10 이상일 경우에는 While문에 넣어 %10을 해 가면서 한 자리씩 줄여가며 체크해주면 되고, 이런 방법으로 모든 수를 확인해준 뒤, 갯수를 출력해주면 끝이다
Leave a Reply