백준 - 한수(1065)
Problem Description
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다.
등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다.
N이 주어졌을때, 1보다 크거나 같고, 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
- 입력 -> 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
- 출력 -> 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
등차수열(arithmetic sequence)은 연속하는 두 항의 차이가 모두 일정한 수열을 뜻한다.
1,000보다 작은 자연수 N이 입력되기 때문에 단위에 따라 구분지어 생각해보자.
- 입력된 자연수 N이 100보다 작은경우는 1 ~ 99 까지는 전부 수 자체가 수열을 만족하기 때문에 입력한 자연수 N을 그대로 return 해주면된다.
- 입력된 자연수 N이 100보다 큰 경우에는 count변수를 99로 초기화시킨 이후 각 자릿수를 꺼내어 차이가 동일하다면 count변수를 1증가 시켜준다.
Code block
A Java Example:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(arithmeticSequence(sc.nextInt()));
sc.close();
}
public static int arithmeticSequence(int number){
//한수의 개수 초기화
int count = 0;
if(number < 100){
return number;
}
else{
//100이상이면 한수의 개수를 99로 초기화
count = 99;
for(int i = 100; i <= number; i++){
int a = i / 100; //100의 자리
int b = (i / 10) % 10; //10의 자리
int c = i % 10; //1의자리
//연속하는 두항의 차이가 같다면 count++
if((a - b) == (b - c)){
count++;
}
}
}
return count;
}
}