반응형
양의 정수 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);
}
다양한 방법이 있을 수 있겠지만 위 방식이 가장 간단한 듯 하다.
반응형
'C > 백준알고리즘' 카테고리의 다른 글
[C] 백준알고리즘 #2292 벌집 (0) | 2021.02.03 |
---|---|
[C] 백준알고리즘 #1712 손익분기점 (0) | 2021.02.03 |
[C] 백준알고리즘 #15596 정수 N개의 합 (0) | 2021.01.28 |
[C] 백준알고리즘 #4344 평균은 넘겠지 (0) | 2021.01.21 |
[C] 백준알고리즘 #8958 OX퀴즈 (0) | 2021.01.21 |