알고리즘
백준 1065 한수 (Python / 파이썬)
hundredeuk2
2023. 7. 13. 16:54
728x90
본 글은 작성자가 직접 푼 코드를 바탕으로 Chat-GPT를 활용하여 포스팅한 글입니다.
https://www.acmicpc.net/problem/1065
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
- 정수 N (1 ≤ N ≤ 1,000)
출력
- 1보다 크거나 같고, N보다 작거나 같은 한수의 개수
해결 방법
주어진 문제를 해결하기 위해서는 다음과 같은 방법을 사용할 수 있다.
- 주어진 수 N보다 작거나 같은 수 중에서 한수인지를 판별한다.
- 한수의 개수를 카운트한다.
- 카운트된 개수를 출력한다.
n = int(input())
cnt = 99
if n < 100 :
print(n)
else:
for i in range(100, n+1):
num = str(i)
gap = int(num[0]) - int(num[1])
status = False
for j in range(1,len(num)-1):
if int(num[j]) - int(num[j+1]) != gap:
status = False
break
else:
status = True
if status:
cnt += 1
print(cnt)
주어진 코드에서는 입력된 수 N에 대해서 한수인지를 판별하고, 카운트하는 로직을 포함하고 있다.
- 입력으로 주어진 수 N보다 작거나 같은 범위에서 한수의 개수를 찾는다.
- 각 수를 문자열로 변환하여 각 자리의 숫자들의 차이를 계산한다.
- 계산된 차이가 일정하지 않으면 한수가 아니므로, 반복문을 중단하고 다음 수로 넘어간다.
- 한수라면 카운트를 증가시킨다.
- 마지막으로 카운트된 개수를 출력한다.