BEAKJOON

백준(1065번 한수)풀이 C++

Shin_jisoo 2020. 12. 6. 22:49
728x90

www.acmicpc.net/problem/1065

 

1065번: 한수

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

www.acmicpc.net

❌100보다 작은 값은 무조건 한수이다.

 

1) 주석없는 VERSION

#include <iostream>
using namespace std;

int checkMatch(int n);

int main() {
    int n;
    cin >> n;

    int ans = 0;
    for (int i = 1; i <= n; i++) {
        if (checkMatch(i) == 1) ans ++;
    }
    cout << ans;

}

int checkMatch(int n) {
    int n100, n10, n1;
    n100 = n / 100; 
    n10 = n % 100 / 10;
    n1 = n % 10; 


    if (n < 100 || (n100 - n10) == (n10 - n1)) return 1;
    else return 0;
}

2) 주석있는 VERSION

#include <iostream>
using namespace std;

int hansoo(int n);

int main() {
    int n;
    cin >> n;

    int ans = 0;
    for (int i = 1; i <= n; i++) {
        if (hansoo(i) == 1) ans ++; // hansoo 함수의 return 값이 1일 때 ans 1증가
    }
    cout << ans;

}

int hansoo(int n) {
    int n100, n10, n1;
    n100 = n / 100; // 백의 자리
    n10 = n % 100 / 10; // 십의 자리
    n1 = n % 10; // 일의 자리

    // n 이 100보다 작거나 연속된 두 개의 수의 차이가 같을 때 1 값 return
    if (n < 100 || (n100 - n10) == (n10 - n1)) return 1;
    else return 0;
}