728x90
#include <stdio.h>
int main(void) {
int num;
int number = 99;
scanf_s("%d", &num);
if (num < 100) {
printf("%d", num);
}
if (num >= 100) {
for (int i = 100; i <= num; i++) {
int num1 = i / 100;
int num2 = (i % 100) / 10;
int num3 = (i % 100) % 10;
if ((num1 - num2) == (num2 - num3))
number++;
}
printf("%d\n", number);
}
}
이 문제 역시 조금 까다로운 것 같다.
그리고 문제 이해가 좀 힘들었다.
한수 개념을 이해하지 못했기 때문이다.
인터넷을 뒤져서 조금 이해를 했는데
세자리가 있다면
백의자리수-십의자리수=십의자리수-일의자리수
가 성립한다면 한수라고 한다.
그리고 이러한 한수가 그 숫자안에 얼마나 있는지에 대해서
구하는 문제인 것 같다.
100미만의 수에서는 모두가 성립될 수 밖에없다.
자리수가 없기때문이다.
그리고 나머지는 위의 노란색의 공식을 따르면된다.
백의자리수,십의자리수, 일의자리수 구하는 것은
나누깅와 나머지 구하기로 만들면되고
인터넷에서 본 코드는 int와 구하는 것을 분리해 놓았는데
나는 이를 간단하게 하기 위해서 합쳐놓았다.
그래도 문제없이 출력된다.
숫자 작은것부터 차례대로 계산해야 하므로
꼭 i를 이용하여 계산을 하면된다.
그리고 공식을 적용한뒤 계속 숫자를 더해준다.
마지막으로 출력을 number로 넣어주면 완성이다.
728x90
'C language > Baekjoon' 카테고리의 다른 글
[C] 백준 11720번 풀이: 숫자의 합 (0) | 2021.07.05 |
---|---|
[C] 백준 11654번 풀이: 아스키 코드 (0) | 2021.07.05 |
[C] 백준 4673번 풀이: 셀프넘버 (0) | 2021.07.03 |
[C] 백준 15996번 풀이: 정수 N개의 합 (0) | 2021.07.03 |
[C] 백준 4344번 풀이: 평균은 넘겠지 (0) | 2021.07.03 |