https://www.acmicpc.net/problem/1065
1065번: 한수
어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나
www.acmicpc.net
# 1065 한수
def hansu(num) :
hansu_cnt = 0
for i in range(1, num+1) :
num_list = list(map(int, str(i)))
if i < 100 :
hansu_cnt += 1
elif num_list[0] - num_list[1] == num_list[1] - num_list[2] :
hansu_cnt += 1
return hansu_cnt
x = int(input())
print(hansu(x))
함수를 이용했다.
x값을 입력받아서 hansu() 함수에 대입한다. 범위 안에 한수의 개수를 저장할 변수 hansu_cnt를 초기화한다. num값을 포함하는 범위이기에 for문에 범위를 1~num+1로 두었다. 변수 num_list에 1부터 문자열로 변환하여 저장한다.
100 미만은 모두 한수이기에 100 미만인 수일 때는 hansu_cnt 값에 1을 더해주고, 그 이상의 값들은 등차가 같은지 확인하기 위해서 num_list[0] - num_list[1] 값과 num_list[1] - num_list[2] 값이 같으면 hansu_cnt 값에 1을 더해준다.
여기서 그 다음 자릿수를 확인하지 않는 이유는 문제에서 1,000 이하의 자연수라고 조건을 줬기 때문이다.
'Coding Test' 카테고리의 다른 글
Python 백준 알고리즘 1516 : 게임 개발 (0) | 2023.02.02 |
---|---|
Python 백준 알고리즘 1717 : 집합의 표현 (1) | 2023.02.02 |
Python 백준 알고리즘 4673 : 셀프 넘버 (0) | 2023.02.01 |
Python 백준 알고리즘 15596 : 정수 n개의 합 (0) | 2023.02.01 |
Python 백준 알고리즘 4344 : 평균은 넘겠지 (0) | 2023.02.01 |