[Python] M P4673 셀프 넘버(set,sorted)Python/Baeckjoon2021. 11. 25. 00:08
Table of Contents
1. 문제 : https://www.acmicpc.net/problem/4673
2. 풀기 전 사고
(1) 함수 먼저 정의하기
(2) d(n)은 누군가[d(d(n)]의 생성자
(3) 전체 집합에서 d(n)의 모든 경우의수를 빼면 셀프 넘버
3. 문제 풀이
(1) 야나의 첫 번째 풀이
def d(n): #생성자를 만드는 함수
x=0
y=list(str(n)) #입력된 n값을 텍스트로 변환하여 리스트화
for i in y:
x=x+int(i) #리스트 y안의 모든 수를 더하기
return n+x
#원래 입력된 n값에 n의 모든 자릿수들을 더한 값을 더하기(생성자)
constructor=set()#생성자 리스트를 만들되, 중복되는 값은 제거 후 생성
for n in range(1,10000): #문제 조건 : 10000보다 작거나 같은 수
constructor.add(d(n)) #생성자를 가진 수의 리스트 생성
selfNums=set(range(1,10000))-constructor
#selfNums 리스트에 생성자를 가지지 않은 수를 넣음
for result in sorted(selfNums): #selfNums 크기순 정렬한 리스트에서 값을 하나씩
print(result) #꺼내 인쇄
4. 사용 개념
1) 집합 자료형 set :
(1) 중복을 허용하지 않음.
(2) 순서가 없다 : set자료형에 저장된 값을 인덱싱으로 접근하려면, 리스트나 튜플로 변환해야 함.
(3) 중복 제거용 필터 역할로 자주 사용.
2) 정렬 함수 sorted :
(1) 파이썬 내장 함수
(2) 매개 변수로 들어온 정렬되지 않은(iterable) 데이터를, 새로운 정렬된 리스트로 만들어 반환하는 함수.
(3) 옵션 key : 어떤 것을 기준으로 정렬할 것인지 지정.
(4) 옵션 reverse : 오름차순(False)/내림차순(True) 결정
cf) "리스트.sort()" : 본래의 리스트를 정렬해서 변환.
"sorted(리스트)" : 본래의 리스트는 그대로, 새로운 정렬된 리스트를 반환하는 함수.
'Python > Baeckjoon' 카테고리의 다른 글
[Python] P1152 단어의 개수 파이썬 풀이 int().split() (0) | 2021.11.29 |
---|---|
[문제 분류] 문제 분류표 (0) | 2021.11.25 |
[Python] STR P10809 알파벳 찾기 (0) | 2021.11.24 |
[Python] BS P2869 달팽이는 올라가고 싶다 (0) | 2021.11.24 |
[Python] LL P1158 요세푸스 문제 (0) | 2021.11.24 |
@Yanako :: Yana's coding story였는데요, 우당탕탕 개발일지가 맞는것같
야나의 코딩 일기장 :) #코딩블로그 #기술블로그 #코딩 #조금씩,꾸준히
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!