public class k의_개수 {
public static void main(String[] args) {
/*
정수 i, j, k가 매개변수로 주어집니다.
i부터 j까지의 수 중에서 k가 몇 번 등장하는지 구하는 문제입니다.
예를 들어 1부터 13까지의 수 중에서
1은 1, 10, 11, 12, 13으로 총 6번 등장합니다.
제한사항
- 1 ≤ i < j ≤ 100,000
- 0 ≤ k ≤ 9
입출력 예
i j k result
1 13 1 6
10 50 5 5
3 10 2 0
입출력 예 설명
#1
본문과 동일합니다.
#2
10부터 50까지 5는 15, 25, 35, 45, 50 총 5번 등장합니다. 따라서 5를 return 합니다.
#3
3부터 10까지 2는 한 번도 등장하지 않으므로 0을 return 합니다.
*/
int i = 10;
int j = 50;
int k = 5;
solution1(i, j, k);
solution2(i, j, k);
solution3(i, j, k);
}
public static void solution1(int i, int j, int k) {
int answer = 0;
for (int n = i; n <= j; n++) {
for (char c : (n+"").toCharArray()) {
if (Integer.parseInt(String.valueOf(c)) == k) {
answer++;
}
}
}
System.out.println(answer);
}
public static void solution2(int i, int j, int k) {
StringBuilder str = new StringBuilder();
for (int n = i; n <= j; n++) {
str.append(n);
}
System.out.println(str.length() - str.toString().replace(k+"", "").length());
}
public static void solution3(int i, int j, int k) {
int answer = 0;
for (int n = i; n <= j; n++) {
int temp = n;
while (temp != 0) {
if (temp % 10 == k) {
answer++;
}
temp /= 10;
}
}
System.out.println(answer);
}
}
프로그래머스 코드
class Solution {
public int solution(int i, int j, int k) {
int answer = 0;
for (int n = i; n <= j; n++) {
for (char c : (n+"").toCharArray()) {
if (Integer.parseInt(String.valueOf(c)) == k) {
answer++;
}
}
}
return answer;
}
}
// class Solution {
// public int solution(int i, int j, int k) {
// StringBuilder str = new StringBuilder();
// for (int n = i; n <= j; n++) {
// str.append(n);
// }
// return str.length() - str.toString().replace(k+"", "").length();
// }
// }
// class Solution {
// public int solution(int i, int j, int k) {
// int answer = 0;
// for (int n = i; n <= j; n++) {
// int temp = n;
// while (temp != 0) {
// if (temp % 10 == k) {
// answer++;
// }
// temp /= 10;
// }
// }
// return answer;
// }
// }