백준 알고리즘 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();
}
}