Baekjoon - 함수

do yeon kim·2022년 6월 9일
0

함수

15596번 정수 N개의 합
def solve(a):
    return sum(a)

test_list = [1,2,3,4,5,6]
result = solve(test_list)
print(result)

=> 21



4673번 셀프 넘버
#문제에서 정의한 생성자를 만드는 코드
def solve(n):
    sum = 0
    result = []
    for i in str(n)[0:]:
        result.append(i)

    for j in result:
        sum = sum + int(j)
    n = n+sum
    return n


range_list= list(range(1,10001))

#셀프 넘버를 리스트에 담는 코드
return_list = []
for i in range(1, len(range_list)+1):
    new_number = solve(i)
    if new_number in return_list:
        pass
    else:
        return_list.append(new_number)

#셀프 넘버를 출력하는 코드
for i in range_list:
    if i in return_list:
        pass
    else:
        print(i)

셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다.

양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다.

예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다.

33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ...

n을 d(n)의 생성자라고 한다. 위의 수열에서 33은 39의 생성자이고, 39는 51의 생성자, 51은 57의 생성자이다. 생성자가 한 개보다 많은 경우도 있다. 예를 들어, 101은 생성자가 2개(91과 100) 있다.

생성자가 없는 숫자를 셀프 넘버라고 한다.





1065번 한수

c = int(input())
test_number = list(range(1,c+1))

def han_number(n):

   
    
    str_list = []    
    for i in str(n)[0:]:
        str_list.append(i)

    if len(str_list) <3:
        return 1    
    else:
        case =[]
        for i in range(1, len(str_list)):
            test = int(str_list[i]) - int(str_list[i-1])
            case.append(test)

        if len(case) == case.count(case[0]):
               return 1 
        else:
            return 0

count = 0
for i in test_number:
    a = han_number(i)   
    count = count+a

print(count)

한수란 어떤 정수 x의 각 자리가 등차수열을 이루는 수를 의미한다.
예를 들어 어떤 정수 123의 경우 각자리는 1,2,3이 된다.
그리고 등차는 1이 되므로 정수123은 한수가 된다.
한자리수 두자리수의 정수는 한수이다.
최소 세자리수부터 한수가 되기 위한 각 자리별 등차계산이 가능하다.

0개의 댓글