Java, S4 | 1065번 한수

임하스·2022년 6월 23일
0

[백준/Java]

목록 보기
1/1
post-custom-banner

1065번 한수

실버4, Java

문제 링크

문제 풀이

  • 한수 : 해당 정수의 각 자리가 등차수열을 이룰 경우
  • 등차수열 : 연속된 두 개의 수의 차이가 일정한 수열
  • N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력
  • N이 1 ~ 1,000보다 작거나 같은 수이기 때문에 1000, 100, 10, 1의 자리일 경우로 나누어 검사하였다.

정답 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

//20분
//14204KB	120ms
public class Main_S4_1065_한수 {
  public static void main(String[] args) throws NumberFormatException, IOException {
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    int N = Integer.parseInt(in.readLine());
    int res = 0; // 한수의 개수
    for (int i = 1; i <= N; i++) { // 1 ~ N까지 한수인지 확인
      int X = i;
      if (X == 1000) { // X가 1000일 경우
        continue; // 등차수열 아님, 패스
      } else if (X >= 100) { // X가 100의 자릿수일 경우
        int x100 = X / 100; // 100의 자릿값
        X %= 100;
        int x10 = X / 10; // 10의 자릿값
        X %= 10;
        int x1 = X; // 1의 자릿값
        if (x10 - x100 == x1 - x10) { // 각 자리가 등차수열일 경우
          res++;
        }
      } else if (X >= 10) { // X가 10의 자릿수일 경우
        res++;
      } else { // X가 1의 자릿수일 경우
        res++;
      }
    }

    System.out.println(res);
  }
}
profile
예비 프론트엔드 개발자입니다! 피드백 대환영!! 질문 대환영!!
post-custom-banner

0개의 댓글