알고리즘

[백준/Java]Q1065

  • -
반응형

백준 알고리즘 6단계 함수 1065번 문제입니다.


Q. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.

[입력]
- 1000보다 작거나 같은 자연수 N이 주어진다.

[조건]
- 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다.
- 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다.

 

풀이

이 문제를 풀기 위해선 등차수열의 이해가 필요했다.

등차수열은 두 수의 차이가 일정한 수열을 말하는데 간단히 아래와 같은 수열로 이해할 수 있다.

  • 12345 : +1씩 증가
  • 13579 : +2씩 증가

이제 반복문을 통해 각 자릿수를 비교한다면 어렵지 않게 풀 수 있다.

 

소스
package com.baek.algo; import java.util.Scanner; public class Q1065 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int x = 1; int hansu = 0; while(true) { if(x < 100) { hansu = x; } else if(x >= 100 & x <= 1000) { int a = x / 100; int b = x / 10 % 10; int c = x % 10; if((a - b) == (b - c)) { hansu = hansu + 1; } } if(x == n || n > 1000) { break; } x = x + 1; } System.out.println(hansu); sc.close(); } }
반응형
Contents

포스팅 주소를 복사했습니다.

이 글이 도움이 되었다면 공감 부탁드립니다.