본문 바로가기
CODING/BAEKJOON

[BAEKJOON] 1065번 한수

by snow_white 2022. 1. 26.


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

 

1065번: 한수

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

www.acmicpc.net

 

'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

댓글