본문 바로가기
IT/알고리즘

1일 1알고리즘 - #6

by Sungjun_ 2020. 5. 15.

문제

https://www.acmicpc.net/problem/4673

 

4673번: 셀프 넘버

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

www.acmicpc.net

문제는 위 사이트에서 확인해주세요.

 


풀이

def main():
    num = 1  # 시작 값을 1로 설정해줍니다.
    totalList = set()  # 수를 더했을 때, 중복을 피하기 위해 집합으로 만들어 줍니다.
    while num <= 10000:  # 10000 이하의 수까지 출력하기 때문에 조건을 <= 10000 이렇게 걸어둡니다
        total = 0  # total 값 0으로 초기화
        length = len(str(num))  # num이 int형이기 때문에 str형으로 바꾸고 길이를 구합니다.
        i = str(num)  # str형 num을 저장
        for n in range(length):  # num의 자리 개수만큼 루프를 돌려줍니다.
            total += int(i[n:n+1])  # 먼저 total에 각 자리수를 더해줍니다.
        total += num  # for 문이 끝나면 자리수가 더해진 total에 num을 더해줍니다.
        totalList.add(total)  # total 값을 집합에 넣어줍니다.
        if num not in totalList:  # num이 집합 안에 없으면 num을 찍어줍니다.   
            print(num) 
        num += 1  # num의 값을 1올려주고 다시 while 문을 돌립니다.
main()  # main함수 출력

 

주석을 확인해주세요.

 


결과

결과 화면

 

'IT > 알고리즘' 카테고리의 다른 글

1일 1알고리즘 - #8  (0) 2020.05.15
1일 1알고리즘 - #7  (0) 2020.05.15
1일 1알고리즘 - #5  (0) 2020.05.14
1일 1알고리즘 - #4  (0) 2020.05.14
1일 1알고리즘 - #3  (0) 2020.05.13

댓글