[Hackerank] Beautiful Days at the Movies with C++
문제 설명
리리는 정수로 놀기를 좋아하는데, 그녀는 정수와 그의 역을 뒤집은 수의 차이를 결정하는 새로운 게임을 만들었습니다. 예를 들어, 숫자가 12이면, 역수는 21입니다. 그들의 차이는 9입니다. 숫자가 18로 뒤집히면 81이고, 그들의 차이는 63입니다.
리리는 이 게임을 의사 결정에 적용하기로 결정했습니다. 그녀는 날짜 범위를 살펴보고 아름다운 날에만 영화를 보기로 합니다.
일련의 날짜 범위와 숫자가 주어지며, 주어진 범위 내에서 아름다운 날의 수를 결정해야 합니다. 아름다운 숫자는 숫자가 로 나누어 떨어지는 경우로 정의됩니다. 만약 어떤 날의 값이 아름다운 숫자이면, 그것은 아름다운 날입니다. 주어진 범위 내에서 아름다운 날의 수를 반환하세요.
함수 설명
다음과 같은 beautifulDays 함수를 완성하십시오.
beautifulDays에는 다음 매개변수가 있습니다.
- int i: 시작하는 날짜 번호
- int j: 끝나는 날짜 번호
- int k: 나누는 수 반환값
제한사항
\[\begin{align} 1 \leq i \leq j \leq 2 * 10^6 \\ 1 \leq k \leq 2* 10^9 \end{align}\]$ 1 \leq i \leq j \leq 2 * 10^6 $
입출력 예
| i | j | k |
|---|---|---|
| 20 | 23 | 6 |
문제풀이
- 현재수의 역순을 구한다
- 절대값으로 현재수와 역순의 값을 구한후 k로 나눈다
- 나머지가 발생안할경우의 개수를 구한다.
코드 (C++)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int reverse(int n) {
int reversed = 0;
while (n > 0) {
reversed = reversed * 10 + n % 10;
n /= 10;
}
return reversed;
}
int beautifulDays(int i, int j, int k) {
int answer = 0;
for (int day = i; day <= j; ++day)
{
int reversedDay = reverse(day);
int difference = abs(day - reversedDay);
if (difference % k == 0) {
answer++;
}
}
return answer;
}
피드백
- hackerank로 풀기 시도했는데 확실히 테스트케이스가 보여서 문제풀기 수월했다
- 앞으로는 hackerank위주로할듯 싶다.
This post is licensed under CC BY 4.0 by the author.