문제 설명
1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장합니다. 정수 i, j, k가 매개변수로 주어질 때, i부터 j까지 k가 몇 번 등장하는지 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 <= i < j <= 100,000
- 0 <= k <= 9
입출력 예
i | j | k | result |
1 | 13 | 1 | 6 |
10 | 50 | 5 | 5 |
3 | 10 | 2 | 0 |
class Solution {
public int solution(int i, int j, int k) {
int answer = 0;
for (int a = i; a <= j; a++) {
int n = a;
while (n > 0) {
int num = n % 10;
if (num == k) {
answer++;
}
n /= 10;
}
}
return answer;
}
}
for문이 i부터 j까지 순회합니다. int n = a로, 이후 while문에서 자릿수 구하는 연산으로 바뀌는 숫자를 초기화 해줍니다. 초기화하지 않으면 무한 루프에 빠집니다.
while문은 n이 0보다 클 때 반복합니다. num 변수는 n의 자릿수를 하나씩 할당받아, if (num == k)를 통해 num과 k가 같은지 비교할 것입니다. 만약 같다면 answer가 1씩 증가합니다. 이러한 반복을 통해, 문제에서 제시한 i부터 j까지 k가 등장하는 횟수를 계산합니다.
'프로그래머스 > Lv. 0(코딩테스트 입문)' 카테고리의 다른 글
[프로그래머스 코딩테스트] 한 번만 등장한 문자(Java) (1) | 2023.05.16 |
---|---|
[프로그래머스 코딩테스트] 로그인 성공?(Java) (0) | 2023.04.22 |
[프로그래머스 코딩테스트] 배열 회전시키기(Java) (2) | 2023.04.20 |
[프로그래머스 코딩테스트] 가위 바위 보(Java) (1) | 2023.04.19 |
[프로그래머스 코딩테스트] 캐릭터의 좌표(Java) (0) | 2023.04.19 |