문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
예제 입력 1
110
예제 출력 1
99
한수를 구하는 문제인데
첫 번째로는 함수로 나누어서 문제를 풀려고 설계했다
main에서는 BufferedReader로 입력값을 받은 후에,
바로 sysout으로 sequence 함수를 호출해 값을 넣어 한수의 개수를 세어주게 하였다
sequence 함수는 숫자를 매개 변수로 받는데
이때, 입력받은 수가 100보다 작다면 그 수만큼 한수가 있는 것이므로
If문으로 걸러주고
else 부분에서는 100보다 큰 값이 들어온 것이기 때문에
cnt를 99개로 놓고 카운트를 시작한다
지문에서 1000이하의 수가 들어온다고 써져있기 때문에
1000이 들어왔을 때는, 어차피 1000은 한수가 아니어서 999로 num을 바꾼다
그리고 반복문을 통해서 100부터 입력받은 num값 까지 반복문을 진행하는데,
이때 백의 자리 숫자는 i를 100으로 나눈 숫자이고,
십의 자리 숫자는 i를 10으로 나눈 후의 10으로 나눈 나머지 숫자이고,
일의 자리 숫자는 i를 10으로 나눈 나머지 숫자이다.
그 다음으로는 If 조건문을 걸어서 각 자릿수의 차가 같을 때 카운트를 세준다
반복문 밖에서는 카운트를 출력해주고 끝낸다
'TIL > Algorithm' 카테고리의 다른 글
Java 백준 11720번 문제 (0) | 2021.10.02 |
---|---|
Java 백준 11654번 문제 (0) | 2021.10.01 |
Java 백준 4673번 문제 (0) | 2021.09.29 |
Java 백준 4344번 문제 (0) | 2021.09.28 |
Java 백준 8958번 문제 (0) | 2021.09.27 |