Notice
Recent Posts
Recent Comments
Link
궤도
[백준] 1065번 : 한수 본문
문제
풀이
1,000 이하 라고는 하지만 1,000은 한수가 아니다. 그리고 1~99는 무조건 한수다. 그렇다면 세자리 수에 대해서만 한수여부 체크를 하면 된다. 세자리 수를 셋으로 쪼갠다. (part[0], part[1], part[2]) 그리고 (part[0]-part[1])==(part[1]-part[2]) 인지 확인하는데, 이거 말고 등차수열의 성질을 이용해서 2*part[1]==part[0]+part[2] 인지 확인해도 상관없다.
소스코드
#include <iostream>
using namespace std;
bool isHan(int n) {
int part[3];
if (n < 100) //100미만이면 무조건 한수
return true;
else if (n == 1000) //1000은 안됨
return false;
else { //3자리 숫자들 한수인지 체크
for (int i = 0; i < 3; i++) { //쪼갬
part[i] = n % 10;
n /= 10;
}
if ((part[0] - part[1]) == (part[1] - part[2])) //체크
return true;
else
return false;
}
}
int main() {
int N, count = 0;
cin >> N;
for (int i = 1; i <= N; i++) {
if (isHan(i))
count++;
}
cout << count << endl;
}
Comments