알고리즘/백준
[백준][C++] 1065: 한수
KANTAM
2024. 5. 4. 18:09
문제
https://www.acmicpc.net/problem/1065
풀이
수학, 브루트포스 알고리즘
- 입력되는 수는 1000 이하의 수이다.
- 100 미만의 수는 모두 한수를 이루기 때문에, 100 미만의 수가 들어온다면 N을 출력한다.
- 0 ~ 9까지의 수는 그 자체로 등차수열이다.
- 10 ~ 99까지의 수는 수열을 이루는 수가 2개이기 때문에 등차수열이다.
- 100 이상의 수가 들어온다면 100부터 N까지 아래의 검사를 실시하여, 통과된 개수를 출력한다.
- 현재 수의 각 자리수를 구한다.
- 연속된 자리수 사이의 차이가 일치한다면 한수이다.
코드
#include <iostream>
using namespace std;
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
int answer = 0;
// 100 미만의 수는 모두 한수이다.
if (N < 100)
{
answer = N;
}
else
{
answer = 99;
// 연속된 자리수 사이의 차이가 일치한다면 한수이다.
for (int current = 100; current <= N; ++current)
{
int hun = current / 100;
int ten = (current / 10) % 10;
int one = current % 10;
if ((hun - ten) == (ten - one))
{
answer++;
}
}
}
cout << answer;
return 0;
}