문제 링크
https://www.acmicpc.net/problem/4673
나의 코드 (Python)
# 셀프넘버를 구하는 함수
def selfNumber(num):
sumNum = num + sum(map(int, str(num))) # 자기 자신 + 각 자리의 합
return sumNum
numbers = set(range(1, 10001)) # 1~10000 생성
result = set() # 중복을 허용하지 않는 자료형
# 1~10000까지 셀프넘버 계산
for i in range(1, 100001):
result.add(selfNumber(i))
# 1~10000을 셀프넘버로 빼면 셀프넘버가 아닌 값을 구할 수 있음
for res in sorted(numbers-result): # 순차적으로 출력
print(res)
셀프 넘버는 자기 자신과 각 자리의 합으로 구성됩니다.
num + sum(map(int, str(num))) 는 num을 str로 감싸면서 각 자리를 나누게 되고 이를 map()을 이용하여 int형으로 바꿔주고 이들의 합을 sum()을 통해서 합을 구할 수 있습니다. 이를 자기 자신(num)과 더하면 셀프 넘버가 됩니다.
이제 1~10000까지 자료형과 빈 set() 자료형을 만들어 줍니다.
이제 빈 set() 자료형인 result에 셀프 넘버를 for 문을 이용하여 1~10000까지 selfNumber() 함수를 이용하여 계산하고 이를 add()를 통해서 저장합니다.
sorted()를 통해 정렬된 1~10000 수 중에 셀프 넘버를 뺀 값 res를 한 줄씩 출력합니다.
'코딩공부 > 백준 (python)' 카테고리의 다른 글
[백준 11654] 아스키 코드 (Python) (0) | 2022.03.09 |
---|---|
[백준 1065] 한수 (Python) (0) | 2022.03.01 |
[백준 15596] 정수 N개의 합 (Python) (0) | 2022.03.01 |
[백준 4344] 평균은 넘겠지 (Python) (0) | 2022.02.22 |
[백준 8958] OX퀴즈 (Python) (0) | 2022.02.22 |
댓글