반응형
문제
https://www.acmicpc.net/problem/4673
코드
numbers = set(range(1,10001))
remove_numbers = set()
for i in range(1, 10001):
for j in str(i):
i += int(j)
remove_numbers.add(i)
self_numbers = sorted(numbers - remove_numbers)
for i in self_numbers:
print(i)
설명
우선 numbers의 범위가 정해져 있으므로,
1부터 10000까지의 수를 중복 없이 만들기 위해 set을 사용하여 만들어준다.
이후 제거할 숫자인 remove_numbers도 비어있는 set 리스트로 만들어준다.
그리고 1부터 10000까지의 숫자 i에 대해서 반복문을 만들어주는데,
이 반복문의 안에는 i를 문자열로 치환한 j가 존재한다.
이를 이용해 각 자리를 더해주고(123인 경우 1+2+3)
이를 기존 값 i에 더해주어 생성자가 있는 숫자의 리스트(remove_numbers)를 만들어준다.
이후 셀프 넘버를 구하기 위해 numbers에서 remove_numbers를 빼준 수들을 정렬하여
차례대로 출력해준다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 1712: 손익분기점 (0) | 2022.12.12 |
---|---|
[파이썬, Python] 백준 1065: 한수 (0) | 2022.12.11 |
[파이썬, Python] 백준 15596: 정수 N개의 합 (2) | 2022.12.09 |
[파이썬, Python] 백준 1316: 그룹 단어 체커 (0) | 2022.12.08 |
[파이썬, Python] 백준 2941: 크로아티아 알파벳 (0) | 2022.12.07 |