[오늘의 백준] 13번째
20 Nov 2020“1065번”
단계별로 풀어보기
- 함수
- 한수
문제 : 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력 : 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력 : 첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
풀이
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));
System.out.print(arithmetic_sequence(Integer.parseInt(br.readLine())));
}
// arithmetic sequence(등차수열) 연산 함수
public static int arithmetic_sequence(int num) {
// 한수의 개수를 카운트하는 변수 생성
int cnt = 0;
// num이 10의 자리 숫자인 경우, num을 return
if (num < 100) {
return num;
} else {
cnt = 99;
if (num == 1000) {
// num이 1000인 경우, 예외 처리
num = 999;
}
for (int i = 100; i <= num; i++) {
int hun = i / 100; // 100의 자리 수
int ten = (i / 10) % 10; // 10의 자리 수
int one = i % 10; // 1의 자리 수
// 각 자리 숫자가 등차수열을 이룬 경우
if ((hun - ten) == (ten - one)) {
cnt++;
}
}
}
return cnt;
}
}