20189030

문제

  • 어떤 양의 정수 X의 자리수가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.

  • 입력
    • 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
  • 출력
    • 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
  • 예제 입력 1
    • 110
  • 예제 출력 1
    • 99

풀이

  • 한 자리 수 (1~9) 는 전부 등차수열
  • 두 자리 수 (10~99) 역시 전부 등차수열
  • 즉 99이하의 수는 답으로 자기 자신을 return하면 된다.

  • 세 자리 수 일 때는 진짜 등차수열이어야 등차수열
    • 예를들어 123 이라면 등차수열이다.
    • 백의자리 숫자 + 일의자리 숫자 = 십의자리 숫자 * 2
    • 를 만족하는 경우 99 에서 + 1 씩 해주면 된다.
  • https://github.com/Oraindrop/algorithm/blob/master/algorithm/src/boj/HanNumber1065.java