반응형
https://www.acmicpc.net/problem/4673
def func(n):
sum = 0
while(n >= 10):
sum += n % 10
n = n // 10
sum += n
return sum
data = set()
not_self = set()
for n in range(1, 10001):
data.add(n)
result = n + func(n)
not_self.add(result)
result = data - not_self
for i in sorted(result):
print(i)
이 문제는 1부터 10001까지의 수를 완전 탐색으로 검사하여 생성자가 있는 숫자를 제외한 셀프 넘버를 출력하는 문제이다. data 집합에는 1부터 10001까지의 모든 수를, not_self 집합에는 func() 함수를 이용하여 그중 생성자가 있는 숫자를 저장하였다. 집합 자료형을 사용한 이유는 not_self에 중복된 숫자가 저장될 수 있기 때문에 이를 제거하기 위함이고 차집합 연산을 이용하여 쉽게 정답을 구할 수 있기 때문이다. 다만 집합 자료형은 순서가 없기 때문에 sorted() 함수를 이용하여 정렬을 해준 후 출력을 해주어야 한다.
반응형
'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ] 2667 - 단지번호붙이기 (0) | 2022.01.16 |
---|---|
[BOJ] 18352 - 특정 거리의 도시 찾기 (0) | 2022.01.16 |
[BOJ] 5622 - 다이얼 (0) | 2022.01.09 |
[BOJ] 1157 - 단어 공부 (0) | 2022.01.06 |
[BOJ] 1439 - 뒤집기 (0) | 2022.01.04 |