문제 링크입니다: 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 |