알고리즘 연습
[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;
}
}