728x90
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
출처
https://www.acmicpc.net/problem/1065
문제풀이
이 문제는 브루트포스 알고리즘을 사용할 경우 굉장히 쉽다.
브루트포스란 다른 말로 "무차별 대입법"이라고 해서
그냥 주어진 조건대로 다 대입해보고 맞는 값 찾아내는 것 이다.
즉, 조건을 다 검사해보는것이라고 생각하면 된다.
문제를 풀때는 조금 귀찮긴해도, 풀고나면 굉장히 뿌듯하다.
자연수는 1000까지 즉, 4자리 숫자까지만 검사하면 된다.
변수를 정해놓고 각 자릿수의 차를 다 검사해보면 된다.
내 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
import java.util.Scanner;
public class Main {
static boolean Hansu(int a) {
boolean result = true;
int b, c, d, e;
if (a <= 99) {
return result;
}
if (a >= 1000) {
b = a / 1000;
a = a % 1000;
c = a / 100;
a = a % 100;
d = a / 10;
a = a % 10;
if ((b - c) != (c - d) || (c - d) != (d - a))
result = false;
}
if (a >= 100) {
c = a / 100;
a = a % 100;
d = a / 10;
a = a % 10;
if ((c - d) != (d - a))
result = false;
}
return result;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
int result = 0;
for (int i = 1; i <= num; i++) {
if (Hansu(i)) {
result++;
}
}
System.out.print(result);
}
}
|
cs |
728x90
'BaekJoon' 카테고리의 다른 글
[백준 알고리즘] 10773번 : 제로 (Python) 문제 풀이 (0) | 2021.08.25 |
---|---|
[백준 알고리즘] 2960번 : 에라토스테네스의 체 (C++) 문제 풀이 (0) | 2021.08.23 |
[백준 알고리즘] 11047번 : 동전 0 (Python) 문제 풀이 (0) | 2021.08.23 |
[백준 알고리즘] 1929번 : 소수구하기 (C) 문제 풀이 (0) | 2021.08.23 |
[백준 알고리즘] 2941번 : 크로아티아 알파벳 (Python) 문제 풀이 (0) | 2021.08.20 |