반응형
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
110
1
210
1000
500
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
99
1
105
144
119
알고리즘 분류
브루트포스 알고리즘(bruteforcing)
소스코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static boolean hansu(int n, List<Integer> arr) {
int su1 = n % 10;
int su2 = n / 10;
if (su2 != 0) {
if (hansu(su2, arr) == false) {
return false;
}
}
arr.add(su1);
if (arr.size() < 3)
return true;
if (arr.get(0) - arr.get(1) == arr.get(arr.size() - 2) - arr.get(arr.size() - 1))
return true;
return false;
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(bf.readLine());
if (N > 1000)
N = 0;
int count = 0;
for (int i = 1; i <= N; i++) {
List<Integer> ans = new ArrayList<>();
if (hansu(i, ans))
count++;
}
bw.write(count + "\n");
bw.flush();
bw.close();
}
}
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
JAVA 백준 11720번 숫자의 합 (0) | 2022.05.06 |
---|---|
JAVA 백준 11654번 아스키 코드 (0) | 2022.05.06 |
JAVA 백준 4673번 셀프 넘버 (0) | 2022.05.05 |
JAVA 백준 15596번 정수 N개의 합 (0) | 2022.05.04 |
JAVA 백준 4344번 평균은 넘겠지 (0) | 2022.05.01 |
댓글