알고리즘/문제 풀이

백준 1065 - 한수

qqlzzb 2022. 3. 19. 22:11

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

 

1065번: 한수

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

www.acmicpc.net

 

풀이

브루트포스로 풀면 되는 문제. 입력받은 수가 100 이하, 즉 2자리수라면 어떤 수든 한수이므로 n을 리턴해주면 되고, 100 이상인 수는 각 자리수를 변수에 저장한 후, 그 차이가 같으면 결과 변수를 증가한다.

 

코드

#include <iostream>
using namespace std;

int func(int n)
{
    int res = 99;
    for(int i=110; i<=n; i++)
    {
        int a1,a2,a3=0;
        a1 = i%10;
        a2 = (i/10)%10;
        a3 = (i/100)%10;
        int gap1, gap2;
        gap1 = a1-a2;
        gap2 = a2-a3;
        if(gap1==gap2) res++;
    }
    return res;
}

int main()
{
    int n;
    cin>>n;
    int res = 0;
    
    if(n<100) res = n;
    else if(n==1000) 
    {
        n=999;
        res=func(n);
    }
    else res = func(n);
    cout<<res<<'\n';
}

 

'알고리즘 > 문제 풀이' 카테고리의 다른 글

백준 1929 - 소수 구하기(C++)  (0) 2022.03.21
백준 1927 - 최소 힙  (0) 2022.03.20
백준 1158 - 요세푸스 문제(C++)  (0) 2022.03.12
백준 4949 - 균형잡힌 세상  (0) 2022.03.03
백준 10816 - 숫자 카드 2  (0) 2022.02.23