728x90
반응형
단계별로 풀어보기 - [6단계.함수] - 1065번 한수
문제
문제링크
https://www.acmicpc.net/problem/1065
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
풀이
1~99까지는 모두 등차수열이다.
- 1~9: 수 하나가 그 자체로 수열
- 10~99: 모두 등차수열
∴ 검사해야 하는 수는 100~1000이다.
따라서 (1)100보다 작은 수, (2)100보다 큰 수 로 경우를 나누어서 개수를 세면 된다.
i라는 정수가 있을 때 각 자리숫자를 구하는 방법
- 백의 자리 수 = i / 100
- 십의 자리 수 = (i / 10) % 10
- 일의 자리 수 = i / 10
CODE
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
System.out.println(hansu(n));
scanner.close();
}
public static int hansu(int n) {
int cnt = 0; // 한수 카운팅
if (n < 100) {
return n;
}
else {
cnt = 99;
if (n == 1000) { // 예외처리 필수
n = 999;
}
}
for (int i = 100; i <= n; i++) {
int hun = i / 100;
int ten = (i / 10) % 10;
int one = i % 10;
if ((hun - ten) == (ten - one))
cnt++;
}
return cnt;
}
}
728x90
반응형