문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
예제 입력 1
110
예제 출력 1
99
예제 입력 2
1
예제 출력 2
1
예제 입력 3
210
예제 출력 3
105
예제 입력 4
1000
예제 출력 4
144
예제 입력 5
500
예제 출력 5
119
문제 해설
해당 문제의 범위는 2가지로 나누어야 합니다. 100 미만의 한자리, 두자리 수는 어떤 수가 오더라도 한수가 됩니다. 따라서 특별한 계산 없이 바로 이를 출력하면 됩니다.
그러나 100이상은 각 자리수를 구해 그 차를 계산하는 것이 필요합니다.
1 0 0 이라 했을 때 1 / 0 / 0 이렇게 각 자리를 구해야합니다.
첫번째 자리 그리고 두번째 자리 1 - 0과
두번째 자리 그리고 세번째 자리 0 - 0이 동일한지 비교하고 동일하면 counter에 1을 더해줍니다.
아래는 코드입니다.
n = int(input())
if n < 100:
print(n)
exit()
count = 99
for i in range(100, n+1):
n1 = i % 10
n2 = i % 100 // 10
n3 = i // 100
if n2 - n1 == n3 - n2:
count += 1
print(count)
'알고리즘 문제 > 백준' 카테고리의 다른 글
[파이썬, Python] 백준 1049 기타줄 (0) | 2024.02.15 |
---|---|
[파이썬, Python] 백준 18110 : solved.ac (+파이썬의 반올림 Round 함수에 대하여) (0) | 2024.02.07 |
[파이썬, Python] 백준 2501번 : 약수 구하기 (0) | 2022.11.29 |
[백준 / 자바] 1157번 단어공부 (0) | 2022.11.26 |