1, 2, 3, 4, 5, ... , 99까지 모두 한수이다.
1~9 까지는 등차(d)가 0이고,
10의 d = 1(1-0), 11의 d = 0(1-1), 12의 d = 1(2-1),... 이 된다.
이렇게 1~99까지는 각 자리수를 따져보았을 때 등차가 성립한다고 할 수 있다.
입력은 1000보다 작거나 같은 수만 존재하므로 세자리수 중 한수인 경우만 골라내면 된다.
재귀함수를 활용하여 한수일 경우는 1을 더해주고, 한수가 아닐 경우는 0을 리턴하여 아무것도 더해주지 않는 방법으로 코드를 작성해보았다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
System.out.println(han_soo(N));
}
public static int han_soo(int n) {
int hundred = n/100;
int ten = (n/10)%10;
int one = n%10;
if((n >0 && n < 100) || (n>=100 && (hundred-ten == ten-one))) { // 한 자릿수, 두 자릿수, 세 자릿수 중 한수인 경우
return 1 + han_soo(n-1);
}
else if(!(n>=100 && !(hundred-ten == ten-one))) {
return 0;
}
else
return han_soo(n-1);
}
}
[출처]
https://www.acmicpc.net/problem/1065
'CODING > BAEKJOON' 카테고리의 다른 글
[BAEKJOON] 11720번 숫자의 합 (0) | 2022.01.27 |
---|---|
[BAEKJOON] 2523 별 찍기 - 13 (0) | 2022.01.26 |
[BAEKJOON] 4673 셀프 넘버 (0) | 2022.01.26 |
[BAEKJOON] 1145번 적어도 대부분의 배수 (0) | 2022.01.26 |
[BAEKJOON] 2615번 오목 (0) | 2022.01.25 |
댓글