본문 바로가기
C++/Baekjoon

[BOJ] #1065. 한수

by 단월໒꒱ 2022. 7. 31.

[문제]

 

 

 

[코드 및 결과]

 

#include <iostream>

using namespace std;

int main() {
    int N, num1, num2, num3;
    int cnt = 0;
    
    cin >> N;
    
    for (int i = 1; i <= N; i++) {
        if (i < 100) {
            cnt++;
        }
        else {
            num1 = i / 100;
            num2 = (i % 100) / 10;
            num3 = i % 10;
            
            if ((num1 - num2) == (num2 - num3)) {
                cnt++;
            }
        }
    }
    
    cout << cnt << "\n";
    
    return 0;
}

 

 

 

 

 

 

[설명]

문제에서 한수란 어떤 양의 정수의 각 자리가 등차수열을 이루는 수라고 정의했다.

등차수열은 연속된 두 개의 수 차이가 일정한 수열을 말하는 것으로, 한자리수, 두자리수의 숫자들은 모두 한수에 해당한다.

따라서 100보다 작은 수들에 대해서는 cnt를 1씩 증가시켜준다.

100보다 큰 숫자일 경우 백의자리수, 십의자리수, 일의자리수를 각각 num1, num2, num3에 저장하고 num1 - num2, num2 - num3을 해서 각 자리 수들 간에 공차를 계산해준다.

두 차이값이 같으면 한수에 해당하므로 cnt를 1씩 증가시키고, 아닐 경우에는 뛰어넘는다.

마지막으로 위의 과정을 통해 구한 cnt 값을 출력해준다.

 

 

 

댓글