백준(C언어) 풀이/함수

백준(C) 1065 한수 풀이

개발윗미 2021. 7. 14. 16:02

C로 구현한 1065번 한수 구하기 문제 풀이입니다.

#include <stdio.h>

void set(int input) {
    if(input < 100)
        printf("%d", input);
    else {
        int a, b, c, count=99;
        for(int i=100; i<=input; i++) {
            a = i%10;
            b = i/10 %10;
            c = i/100;
            if((a-b) == (b-c))
                count ++;
        }
        printf("%d", count);
    }
}

int main() {
    int input;
    scanf("%d", &input);
    set(input);
}

 

우선 100 미만의 수들은 모두 한수가 성립됩니다. 그렇기 때문에 100 미만의 수는 그대로 출력해주고

 

100이상의 수는 각 자리수를 구해 해당 자리 수 간의 차이가 같으면 count 를 1씩 증가시키도록 합니다.

 

 

[소감]

입력된 수가 100이상일 경우에 99이하의 수들은 모두 한수이기 때문에 변수 count 초기값을 99로 지정해줘야 하는데

 

습관적으로 0으로 초기화해버렸다.. 정신 차리고 차근차근 하자 ..!


https://www.acmicpc.net/problem/1065

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net