본문 바로가기
백준알고리즘/함수

(Python/🥉2)백준 알고리즘 1065번: 한수

by windy7271 2022. 5. 6.
728x90
반응형

문제출처: https://www.acmicpc.net/problem/1065

 

1065번: 한수

어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나

www.acmicpc.net

 

 

1. 등차수열

숫자와 숫자의 사이의 간격이 동일한 숫자의 나열. 두 자리 숫자는 등차수열인지 비교대상이 없기 때문에 모두 한수 세자리 숫자는 각 자리의 숫자 간격이 동일하면 한수

 

 

함수를 사용하지 않은 풀이

hansu = 0
num = int(input()) # N은 1000보다 작은 수 (세자리 수)
for i in range(1, num+1):
    if i < 100:
        hansu += 1 # 100 미만 숫자는 모두 한수
    else :
        n = list(map(int,str(i)))
        if n[2]-n[1] == n[1]-n[0]: #자리 수 비교가 같을때 hansu +1 
            hansu += 1
print(hansu)

 

 

함수를 사용하지 않아 다른 분들의 코드를 참고함.

def hansu(num) :
    hansu_cnt = 0
    for i in range(1, num+1):
        num_list = list(map(int,str(i))) # 숫자 한 자리씩 list형으로 저장
        if i < 100:
            hansu_cnt += 1  # 100보다 작으면 모두 한수
        elif num_list[0]-num_list[1] == num_list[1]-num_list[2]:
            hansu_cnt += 1  # x의 각 자리가 등차수열이면 한수
    return hansu_cnt

num = int(input())
print(hansu(num))

https://ooyoung.tistory.com/65

 

반응형

댓글