알고리즘 연습

[1065] 한수 - Java

밀깜 2021. 11. 7. 12:56

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

 

1065번: 한수

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

www.acmicpc.net

 

1. 배운점

- 경우의 수를 나누어 사고한다 (1의 자리, 10의 자리 수는 함수에 대입할 필요가 없었음)

 

2. 개선할 점

 

3. 궁금한 점

 

import java.util.Scanner;

public class N_1065_한수 {
	
	public static void main(String[] args) {
		
		// import java.util.Scanner
		Scanner scan = new Scanner(System.in);
		
		// 정수 N 입력받기
		int number = scan.nextInt();
		
		// 반복문을 활용하여 조건을 만족하는 한수의 개수 출력하기
		int count = 0;
		
		for(int i = 1; i <= number; i ++) {
			
			// 1의 자리, 10의 자리인 경우
			if (i < 100) {
				count++;
			}
			// 100의 자리인 경우
			else if(i >= 100) {
				if(isHansu(i)) {
					count++;
				}
			}
		}System.out.println(count);
	}
	
	// 한수인지를 판단하는 메서드
	static boolean isHansu(int number) {
		int [] numArr = new int[String.valueOf(number).length()];
		
		// 자리 수 각각을 배열에 담기
		int i = 0;
		while(number > 0) {
			
			numArr[i] = number % 10;
			number /= 10;
			i++;
		}
		
		// 각 자리가 등차수열을 이루는지 검사
		boolean flag = false;
		
		for(int j = 0; j < numArr.length - 1; j++) {
			int gapNum = numArr[1] - numArr[0];
			
			if(numArr[j] + gapNum == numArr[j+1]) {
				flag = true;
				
			} else {
				flag = false;
				break;
			}
		}
		return flag;
	}
}