toyboy0113   2년 전

저는 다른 방식으로 풀었는데 다른분들 코드 보니까 밑에 처럼 코드를 짜신분도 계시더라구요

그런데 도무지 여기쪽 코드 흐름이 감이 안잡히네요..

for num in number:
     for n in str(num):
          num += int(n)
     if num <= 10000:
          list_a.append(num)

흐름좀 알려주시면 감사하겠습니다.

nahwasa   2년 전

def solve():
    number = list(range(1,10001))
    list_a = []
    for num in number:   1~10000에 대해 하나씩 빼서(num)
        for n in str(num):   num을 문자로 바꿀걸 한 character씩(n)
            num += int(n)    n은 character이니 int로 바꾸고, 문제에서 제시된 방법으로 숫자를 만듬
        if num <= 10000:     어차피 10000까지만 출력하면 되므로 10000 초과면 필요없음
            list_a.append(num)    현재 num이란건 1~10000까지의 어떤 숫자를 생성자로 가지는 수가 됨. 이걸 list_a 라는거에다가 넣음
    for a in set(list_a):    number(현재 1~10000)중에list_a에 들어있던걸 제외함
        number.remove(a)
    for i in number:      그럼 number에 남은건 1~10000을 생성자로 가지지 않는 숫자들임. -> 근데 어차피 n으로 만드어지는 수는 n보다 항상 커지므로 1~10000까지 전부 확인 가능함.
        print(i)
solve()

toyboy0113   2년 전

답변 감사합니다~

댓글을 작성하려면 로그인해야 합니다.