Algorithm/Implementation
(Python/파이썬) - 백준(BOJ) 1065번 : 한수
하눤석
2022. 4. 7. 11:55
728x90
https://www.acmicpc.net/problem/1065
- 문제 :
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
- 풀이 :
N이 최대 1,000 이므로 3가지 경우로 나누어서 생각하였다.
1. N이 100보다 작을 떄 -> 그냥 N값을 출력하면 된다. 1자리 수와 2자리 수는 모두 등차수열이기 때문이다.
2. N이 1,000일 때 -> 144개라는 사실을 예제를 통해 알고 있다.
3. 위에서 걸러지지 않은 나머지 경우 -> 반드시 N은 3자릿수이라는 보장이 되어있기 때문에 2번째자리 - 1번째자리가
1번째자리 - 0번째자리랑 같다면 카운팅해주면 된다.
주어진 문제의 조건에만 딱 맞추어서 해결했다.
만약 N의 범위가 더 커서 보편화하는 코드였다면 1번조건과 3번조건만 사용하여 3번조건에서 for문으로 i+1번째 - i번째 값으로 등차수열 여부를 확인했을 것 같다.
- 소스코드 :
N = int(input())
if N < 100:
print(N)
elif N == 1000:
print(144)
else:
ans = 99
for i in range(100,N+1):
i = str(i)
if int(i[1]) - int(i[0]) == int(i[2]) - int(i[1]):
ans += 1
print(ans)
320x100