백준 1065번 - 한수
Updated:
C++
1065번 - 한수
접근
우선 1~99 까지는 각 자리의 수 차이의 비교 대상이 없어서 한수
라고 생각 할 수 있다.
이후 100 부터는 각 자리의 수를 구하여 차이 값을 이용해 등차수열이면 cnt를 증가시킨다.
이 문제의 조건이 1000까지이기 때문에 100의 자릿수 까지의 int형 변수로 풀어도 가능하다. 만약 조건이 1,000,000 까지 올라간다면 위의 때려박는 식의 코드는 통하지 않을 것 같아 n의 크기의 상관없이 성립하는 코드를 다시 짜볼 필요가 있다.
코드
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int n;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> n;
int cnt = 0, one, ten, hun, curN;
for (int i = 1; i <= n; i++) {
curN = i;
if (i < 100) {
cnt++;
}
else {
one = curN % 10;
curN /= 10;
ten = curN % 10;
curN /= 10;
hun = curN;
if (ten - one == hun - ten) {
cnt++;
}
}
}
cout << cnt;
return 0;
}
후기 및 개선할 점
걸린 시간 : 20분