알고리즘/BOJ

백준 1065번 한수

꾸준함. 2018. 5. 16. 22:13

문제 링크입니다: https://www.acmicpc.net/problem/1065


BruteForce를 통해 각 자리수를 확인해서 한수의 개수를 구하는 문제였습니다.

한수는 백의 자리 숫자부터 판별할 수 있으므로 idx>1일 때부터 판별을 진행하였습니다.

주석을 자세히 작성했기 때문에 별도의 설명은 필요 없을 것 같습니다!


#include <iostream>

using namespace std;

 

int X;

 

int arithmeticSequence(void)

{

        int cnt = 0;

        int digit[4]; //1000보다 같거나 작으므로

        for (int num = 1; num <= X; num++)

        {

                 bool han=true; //한수

                 int idx = 0;

                 int copy = num; //num에 대해 계산하기 위해 복사

                 while (copy)

                 {

                         digit[idx++] = copy % 10;

                         copy /= 10;

                 }

                 //세자리 수여야 한수 판별 가능

                 if (idx > 1)

                 {

                         //십의 자리수와 일의 자리 수 차를 저장

                         int difference = digit[1] - digit[0];

                         //한수 판별

                         for(int i=2; i<idx; i++)

                                 if (digit[i] - digit[i - 1] != difference)

                                 {

                                          han = false;

                                          break;

                                 }

                 }

                 if (han) //한수일 경우 센다

                         cnt++;

        }

        return cnt;

}

 

int main(void)

{

        cin >> X;

 

        cout << arithmeticSequence() << endl;

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~ 

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 14753번 MultiMax  (0) 2018.05.19
백준 4963번 섬의 개수  (0) 2018.05.17
백준 1660번 캡틴 이다솜  (4) 2018.05.15
백준 2869번 달팽이는 올라가고 싶다  (0) 2018.05.15
백준 1562번 계단 수  (0) 2018.05.14