[BOJ_step_06]함수 - 한수

최대 1 분 소요

한수

문제
***

1. 문제 설명 및 풀이

입력 조건
첫째 줄에 1000 보다 작거나 같은 자연수 N이 주어진다.

출력 조건
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.

문제의 설명이 너무 빈약한것 같다. 문제를 이해하기가 너무 어려웠었다. 한 자리 숫자, 두 자리 숫자는 어떻게 되는걸까… 하고 고민을 많이했다. 그래서 질문 검색을 좀 참고 했다. 한 자리 숫자는 수열의 길이가 1이라 무조건 참이고, 두 자리 숫자는 공차가 양 또는 음인 수열의 길이가 2인 등차수열이다. 따라서 1~99까지는 모두 등차수열이다. 따라서 100부터 1000까지의 숫자 중 한수를 찾으면 되는 문제이다.
각 자리수의 차이가 같으면 한수!

#include<cstdio>
int cnt;
void Process(int n) {
	for (int i = 1; i <= n; i++) {
		if (i < 100)cnt++;
		if (i >= 100 && i < 1000)
			if (i % 10 - (i / 10) % 10 == (i / 10) % 10 - i / 100)
				cnt++;
	}
	printf("%d", cnt);
}
int main() {
	int n;
	scanf("%d", &n);
	Process(n);
	return 0;
}

댓글남기기