[문제]
[코드 및 결과]
#include <iostream>
using namespace std;
int main() {
int N, num1, num2, num3;
int cnt = 0;
cin >> N;
for (int i = 1; i <= N; i++) {
if (i < 100) {
cnt++;
}
else {
num1 = i / 100;
num2 = (i % 100) / 10;
num3 = i % 10;
if ((num1 - num2) == (num2 - num3)) {
cnt++;
}
}
}
cout << cnt << "\n";
return 0;
}
[설명]
문제에서 한수란 어떤 양의 정수의 각 자리가 등차수열을 이루는 수라고 정의했다.
등차수열은 연속된 두 개의 수 차이가 일정한 수열을 말하는 것으로, 한자리수, 두자리수의 숫자들은 모두 한수에 해당한다.
따라서 100보다 작은 수들에 대해서는 cnt를 1씩 증가시켜준다.
100보다 큰 숫자일 경우 백의자리수, 십의자리수, 일의자리수를 각각 num1, num2, num3에 저장하고 num1 - num2, num2 - num3을 해서 각 자리 수들 간에 공차를 계산해준다.
두 차이값이 같으면 한수에 해당하므로 cnt를 1씩 증가시키고, 아닐 경우에는 뛰어넘는다.
마지막으로 위의 과정을 통해 구한 cnt 값을 출력해준다.
'C++ > Baekjoon' 카테고리의 다른 글
[BOJ] 2022 SISS 2학기 스터디 - 1주차 (0) | 2022.09.11 |
---|---|
[BOJ] #1302. 베스트셀러 (0) | 2022.08.07 |
[BOJ] 2022 SISS 1학기 스터디 - 8주차 (0) | 2022.06.24 |
[BOJ] 2022 SISS 1학기 스터디 - 7주차 (0) | 2022.06.19 |
[BOJ] 2022 SISS 1학기 스터디 - 6주차 (0) | 2022.05.20 |
댓글