https://www.acmicpc.net/problem/1065
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 ��
www.acmicpc.net
'한수'를 이해하지 못한다면 은근 까다로운 문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다
예를들어, 123 인경우 1, 2, 3은 공차가 1인 등차수열을 이루므로 한수이다.
951의 경우 9, 5, 1은 공차가 4인 등차수열로 한수이다.
777의 경우 7, 7, 7은 공차가 0인 등차수열로 한수이다.
십의자리 수는 무조건 등차수열일수 밖에 없다. 십의 자리 수는 무조건 연결된 두개의 수의 차이가 일정하기 때문이다.
예를들어 12의 경우 1, 2는 등차가 1인 등차수열로 한수이다.
일의자리 수 또한 한수일 수 밖에 없다. 왜냐하면 값이 하나이기 때문이다.
따라서 우리가 생각해야 되는것은 입력받는 값 n이 100이상 일때만 생각하면 된다.
크기가 3인 num 배열을 만든다. 이 배열에는 각자리 숫자를 하나씩 넣어 줄 것이다.
n이 100이상일때 i for문이 돌아간다.
n이 100미만이면 n의 값을 return해주면 된다.
%10을 이용하여 각 자리수를 구하고 /10을 이용하여 자리수를 하나 없앤다.
%10을 이용하여 구한 각 자리를 num 배열에 넣어준다.
num[2]-num[1]의 값과 num[1]-num1[0]의 값이 같으면 이것은 등차수열이라는 뜻이고 count++를 해준다.
만약 i가 1000이 되면 이것은 충분히 등차수열이 아니라는 것을 확인 할 수 있으므로 break를 해준다.
for문이 다 돌아가면 count를 return 해준다.