이전
백준 한수 1065
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
예제입력,출력
110, 99
1, 1
210, 105
1000, 144
500, 119
풀이
- 1~99는 모두 등차수열
- 1,2,3,4,5,6,7,8,9 자체가 수열
- 10~99 각 자리수 차가 공차 67은 공차가 1, 53은 공차가 -2인 등차수열
- case는 100보다 작은 수, 100보다 큰 수
- 입력받는 숫자가 100보다 작은 경우에는 입력받은 숫자를 리턴
- 100 이상의 숫자를 입력받으면 최소 99개+a
- 백의자리-십의자리 == 십의자리-일의자리 true면 등차수열
백의자리 i/100
십의자리 (i/10) % 10
일의자리 i%10
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int count = hansu(scanner.nextInt());
System.out.println(count);
}
public static int hansu(int num) {
int cnt = 0;
if(num < 100){
return num;
}else {
cnt = 99;
}
for(int i =100; i<= num; i++) {
int hundreds = i/100;
int zodiac = (i/10)%10;
int units = i%10;
if(hundreds-zodiac == zodiac-units) {
cnt++;
}
}
return cnt;
}
}