본문 바로가기
알고리즘/백준

백준 1065번(한수) c++

by Jo_Wick 2023. 4. 9.
반응형

문제

 

문제풀이

문제에서 N은 1000 이하의 자연수이다.

그러면 총 세가지의 경우로 나눠 생각할 수 있다.

1 ~ 9 / 10 ~ 99 / 100 ~ 999 로 나눌 수 있다.

그런데 1 ~ 9는 하나의 숫자 밖에 없기 때문에 자동적으로 한수가 된다.

그리고 10 ~ 99 또한 두가지 숫자 밖에 없기 때문에 무조건 등차수열이 될 수 밖에 없다.

그러면 우리는 100 ~ 999의 경우만 생각을 하면 된다.

 

hun = i / 100;
ten = (i % 100) / 10;
one = i % 10;
			
int fir = hun - ten;
int sen = ten - one;
if (fir == sen) {
	stan++;
}

이렇게 각 자리의 수를 구한 뒤, 각 자리 끼리 차이를 구하여 만약 차이가 같다면 count를 해주면 된다.

 

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void selfnumber(void);

int main()
{
	selfnumber();

	return 0;
}

void selfnumber(void) {

	int stan = 0;
	int input = 0;
	int cal = 0;
	int one = 0, ten = 0, hun = 0;
	scanf("%d", &input);
	for (int i = 1; i <= input; i++) {
		if (i < 100) {
			stan++;
		}
		else if (i < 1000 && i >= 100) {
			hun = i / 100;
			ten = (i % 100) / 10;
			one = i % 10;
			
			int fir = hun - ten;
			int sen = ten - one;
			if (fir == sen) {
				stan++;
			}
		}
	}
	printf("%d", stan);

}
반응형

댓글