문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
문제 풀이
어떤 양의 정수 N의 각 자리가 등차수열을 이룬다면
그 수는 한수입니다.
만약 어떤 양의 정수 N이 1~99 사이의 수라면
무조건 각 자리가 등차수열을 이룹니다.
따라서 만약 N이 100보다 작다면 N을 출력하도록 해주었습니다.
만약 N이 99보다 크다면 각 자리가 등차수열을 이루는지 확인해보아야 합니다.
이때, 99까지는 무조건 등차수열을 이루므로 확인할 필요가 없습니다.
따라서 count 할 개수의 초기 값을 99로 설정해주었습니다.
또한, 100부터 N까지 수 모두 각 자리가 등차수열을 이루는지
반복문을 통해 확인해주었습니다.
먼저 1번째 값과 0번째 값의 차를 비교 값으로 설정해주고
그 다음 자리들의 차를 확인해가며 만약 비교 값과
다른 값이 있다면 check 변수에 False를 저장하도록 해주었습니다.
만약 위 과정을 모두 수행했는데도 check가 True라면 한수라는 것이므로
개수를 count 해주었습니다.
My Code
n = int(input())
if n < 100: # n이 100보다 작으면 모두 한수이므로 n출력
print(n)
else: # n이 100보다 크거나 같으면
result = 99 # 99까지는 한수이므로 초기값 99로 설정
# 100부터 n까지 한수인지 검사
for i in range(100, n + 1):
check = True
new = str(i)
x = int(new[1]) - int(new[0]) # 1번째 값과 0번째 값의 차를 비교값으로 설정
for j in range(1, len(new) - 1):
if x != int(new[j + 1]) - int(new[j]): # 값이 다르면 한수 아니므로
check = False # False를 저장
if check: # check가 True이면 한수이므로
result += 1 # 개수를 count
print(result)
'백준(Python) 풀이' 카테고리의 다른 글
백준 14889번. 스타트와 링크 (Python / 파이썬) (0) | 2022.04.22 |
---|---|
백준 14888번. 연산자 끼워넣기 (Python / 파이썬) (0) | 2022.04.22 |
백준 9012번. 괄호 (Python / 파이썬) (0) | 2022.04.21 |
백준 1541번. 잃어버린 괄호 (Python / 파이썬) (0) | 2022.04.20 |
백준 1026번. 보물 (Python / 파이썬) (0) | 2022.04.20 |
댓글