-
[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; } }
'알고리즘 연습' 카테고리의 다른 글
[15596] 정수 N개의 합 Java (0) 2021.11.07 [4673] 셀프 넘버 - Java (0) 2021.11.07 [10757] 큰 수 A + B - Java (0) 2021.11.06 [1712] 손익분기점 - Java (0) 2021.11.06 [2908] 상수 - Java (0) 2021.11.05