티스토리 뷰

728x90

문제

https://www.acmicpc.net/problem/1065

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net

 

풀이 및 소스코드

import java.io.*;
import java.util.*;


class Main {
	static int n;
	static int cnt;
	static int[] save;
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		n = scan.nextInt();
		if(n<100) {
			System.out.println(n);
			System.exit(0);
		}else if(n==1000) {
			System.out.println("144");
			System.exit(0);
		}
		cnt = 99;
		save = new int[n+1];
		sub_num(100);
		System.out.println(save[n]);
	}
	public static void sub_num(int now_num) {
		if(now_num>n) {
			return;
		}
		if(save[now_num]!=0) sub_num(now_num+1);
		else {
			String tmp = Integer.toString(now_num);
			int a = tmp.charAt(0)-'0';
			int b = tmp.charAt(1)-'0';
			int c = tmp.charAt(2)-'0';
			if(a-b == b-c) {
				cnt++;
			}
			save[now_num] = cnt;
			sub_num(now_num+1);
		}
	}
}
반응형