문제
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;
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준][C++] 7562: 나이트의 이동 (0) | 2024.07.21 |
---|---|
[백준][C++] 9020: 골드바흐의 추측 (0) | 2024.05.06 |
[백준][C++] 2512: 예산 (0) | 2024.04.29 |
[백준][C++] 14888: 연산자 끼워넣기 (0) | 2024.04.21 |
[백준][C++] 17143: 낚시왕 (1) | 2024.04.21 |