C/백준알고리즘

[C] 백준알고리즘 #1065 한수

Sehyeok20 2021. 1. 28. 17:19
반응형

백준알고리즘 #1065 한수

 

양의 정수 X를 입력받아 이 X의 각 자리수가 등차수열을 이루는지 판단하는 함수를 작성하는 문제이다.

 

먼저 X를 파라미터로 받는 함수를 han()이라고 한다.

각 자리수를 저장할 변수 a,b,c를 생성한다.

1 ~ 99 까지의 수는 모두 한수이고, 1000은 한수가 아니다. 이 조건식을 먼저 만들어준다.

int a, b, c; //100자리, 10자리, 1자리 저장할 변수

if (i == 1000) {
	return 0;
}
else if (i < 100) {
	return 1;
}

 

 

그리고 a b c 에 각 자리수를 입력해준다.

a = i / 100;
b = (i % 100) / 10;
c = i % 10;

 

이제 100의자리에서 10의자리를 뺀 값(a - b)과 10의자리에서 1의자리를 뺀 값(b - c) 을 비교하여

같다면 1을 리턴하고 아니라면 0을 리턴하면 된다.

if ((a - b) == (b - c)) {
	return 1;
}
else return 0;

이제 리턴받은값이 1이라면 count(한수의 개수)를 증가시켜주면 문제에서 요구하는 한수의 개수를 찾을 수 있다.

 

 

전체 코드를 보자.

 

#include <stdio.h>
int han(int i) {
	int a, b, c; //100자리, 10자리, 1자리 저장할 변수
	
	if (i == 1000) {
		return 0;
	}
	else if (i < 100) {
		return 1;
	}
	else {
		a = i / 100;
		b = (i % 100) / 10;
		c = i % 10;

		if ((a - b) == (b - c)) {
			return 1;
		}
		else return 0;

	} return 0;
	
}
int main() {
	int n;
	int count = 0;

	scanf_s("%d", &n);
	for (int i = 1; i <= n; i++) {
		if (han(i) == 1) {
			count++;
		}
	}
	printf("%d", count);
}

다양한 방법이 있을 수 있겠지만 위 방식이 가장 간단한 듯 하다.

 

반응형