반응형
문제
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다.
출력
첫째 줄에 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력한다.
소스 코드
def isHansu(x):
if x < 100:
return True
elif (x // 100 - (x % 100) // 10) == ((x % 100) // 10 - (x % 10)):
return True
else:
return False
n = int(input())
cnt = 0
for i in range(1, n + 1):
if isHansu(i):
cnt += 1
print(cnt)
문제에서 주어지는 수의 범위는 1~1000이다. 즉, 한 자리수, 두 자리수, 세 자리수 그리고 1000이 주어진다.
한수의 정의: 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다.
1. 한 자리수 혹은 두 자리수 정수는 무조건 한수다. (각 자리 사이의 구간 개수가 0 또는 1이기 때문에 구간끼리 간격을 비교할수 없다. 따라서 등차를 이룬다고 볼 수 있다.)
2. 세 자리 수는 각 자리 사이의 구간이 두개 이므로 그 두 구간을 비교해주면 된다. 모듈러 연산을 통해 원하는 자리 수의 숫자를 선택할 수 있다.
3. 1000은 한수가 아니므로 무시한다.
반응형
'문제해결(PS) > 백준(BOJ)' 카테고리의 다른 글
백준 BOJ 1260번 DFS와 BFS - Python 풀이 (1) | 2023.10.26 |
---|---|
백준 BOJ 1463번 1로 만들기 실버3 - Python 풀이 (0) | 2023.10.26 |
백준 BOJ 4673번 셀프 넘버 실버5 - Python 풀이 (1) | 2023.10.23 |
백준 BOJ 2839번 설탕 배달 실버4 - Python 풀이 (1) | 2023.10.22 |
백준 BOJ 1976번 여행 가자 골드5 - Python 풀이 (0) | 2023.10.20 |