[문제]
https://www.acmicpc.net/problem/4673
4673번: 셀프 넘버
셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때,
www.acmicpc.net
[풀이]
numbers = set(range(1, 10000))
have_generated_num_set = set()
for num in numbers:
for n in str(num):
num += int(n)
have_generated_num_set.add(num)
self_numbers = numbers - have_generated_num_set
for self_number in sorted(self_numbers):
print(self_number)
[새로 배우게 된 것]
◉ 파이썬 자료형 set
파이썬 자료형 set은 집합에 관한 것을 다루기 위해 만들어진 자료형이다.
> 사용법
list1 = [1,2,3]
s1 = set(list1)
# 결과: {1, 2, 3}
word = "hello"
s2 = set(word)
# 결과: {'e', 'h', 'l', 'o'}
set 자료형의 가장 큰 특징은 ① 중복을 허용하지 않고 ② 순서가 없다는 것이다.
비어있는 set 자료형은 s = set() 이렇게 만들 수 있다.
> 집합이기 때문에 교집합, 합집합, 차집합 등도 구할 수 있다.
s1 = set([1, 2, 3, 4, 5, 6])
s2 = set([4, 5, 6, 7, 8, 9])
■ 교집합
s1 & s2
s1.intersection(s2)
# 결과: {4,5,6}
& 기호를 사용하거나 intersection 메소드를 이용해서 구하면 된다.
■ 합집합
s1 | s2
s1.union(s2)
# 결과: {1,2,3,4,5,6,7,8,9}
| 기호나 union 메소드를 이용하면 된다.
■ 차집합
s1 - s2
# 결과: {1,2,3}
s2 - s1
# 결과: {7,8,9}
- 를 이용한 방법이다.
s1.difference(s2)
# 결과: {1,2,3}
s2.difference(s1)
# 결과: {7,8,9}
difference 메소드를 이용한 방법이다.
728x90
광고
광고
'백준' 카테고리의 다른 글
| 백준 1110번 더하기 사이클 (0) | 2022.08.04 |
|---|---|
| 백준 4344번 평균은 넘겠지 (0) | 2022.08.04 |
| 백준 2525번 오븐 시계 문제 (0) | 2022.05.22 |

