[Silver V][JAVA] 1065번:한수

호수·2024년 4월 13일
0

JAVA 알고리즘

목록 보기
47/67
post-thumbnail
post-custom-banner

1065번:한수

등차수열 및 한수 이해하기

등차수열에 대한 이해 : 1,3,5,7,9,⋯처럼 연속한 두 항의 차가 일정한 수열을 등차수열이라고 한다. 
한수 : 어떤 숫자에 대해서 각 자리수들이 등차수열을 이루는 수.
공차(common difference) 또는 d : 연속한 두 항에서, 뒤 항에서 앞 항을 뺀 값 =>  1,3,5,7,9... 에서 두번째 항 - 첫번째항 (3-1 = 2) 은 2(공차d)가 된다. 

등차수열의 식 : a(n번째) ​= a + ( n − 1 ) * d
579를 식에 대입   :    9       =  5  +  (  3  − 1  )  *  2

풀이 방법

  • 1 ~ 99 는 모두 등차 수열이다. (1 ~ 1000 까지의 수 중 검사할 수는 100~1000 까지 밖에 없다.)
  • 100 이상부터는 100의 자리, 10의 자리, 1의 자리로 구분
  • (100, 10 자리 수 차이) == (10, 1의 자리 수 차이) 동일하면 공차

정답

import java.io.*;

 public Main { //문제유형: 브루트포스 , 메모리 제한: 128MB, 시간 제한: 2초
     public static void main(String args[]) throws IOException {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         int num = Integer.parseInt(br.readLine());

         int cnt = 0; // 한수 카운팅

         if (num < 100) {
             System.out.println(num);
         }
         else {
             cnt = 99;
             for (int i = 100; i <= num; i++) {
                 int hun = i / 100; // 백의 자릿수
                 int ten = (i / 10) % 10; // 십의 자릿수
                 int one = i % 10;

                 if ((hun - ten) == (ten - one)) { // 각 자릿수가 수열을 이루면
                     cnt++;
                 }
             }
             System.out.println(cnt);
         }
     }
 }
profile
Back-End개발자 성장과정 블로그🚀
post-custom-banner

0개의 댓글