이 문제는 매우 복잡해 보이는데.. 실제로도 복잡하다
줄여서 말하자면
만약 11이라는 숫자가 있으면, 이에 대한 문제에 나와 있는 함수는
이 숫자를 가지고 11 + 1 + 1이라는 수식을 진행한다
[ 숫자 + 숫자의 십의 자릿수 + 숫자의 일의 자릿수 ]
숫자가 백의 자릿수, 천의 자릿수까지 있으면 그 숫자까지 더해주면 된다
또한 위 수식의 결과값을 통해 11은 13의 생성자라는 결론이 나오게 되는데,
우리가 이 문제에서 출력해내야 하는 값은 어떤 값의 생성자에도 속하지 않는 숫자들이다
즉, 우리가 출력해야 하는 숫자 중에 11은 존재하지 않는다는 것이다
netural = set(range(1,10001))
addnum = set()
for i in range(1, 10001):
for k in str(i):
i += int(k)
addnum.add(i)
num = sorted(netural - addnum)
for j in num:
print(j)
코드도 매우 복잡한데...
우선 1부터 10000까지의 숫자들을 가지고 위의 수식을 진행해
수식 결과값을 1부터 10000까지 들어가 있는 netural 리스트에서 제외해주면(sorted(netural - addnum))
어떤 숫자의 생성자에도 속하지 않는 숫자들만이 남게 되는데, 이를 하나씩 프린트해 주기만 하면 정답이 된다
'코딩 테스트 > 백준 파이썬 문제 풀이' 카테고리의 다른 글
[백준 11654번 파이썬] 아스키 코드 (0) | 2022.04.01 |
---|---|
[백준 1065번 파이썬] 한수 (0) | 2022.04.01 |
[백준 15596번 파이썬] 정수 N개의 합 (0) | 2022.04.01 |
[백준 4344번 파이썬] 평균은 넘겠지 (0) | 2022.03.31 |
[백준 8958번 파이썬] OX퀴즈 (0) | 2022.03.31 |