반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 사회조사분석사 2급 공부방법
- 사회조사분석사 2급 기출문제집
- 공모주청약
- 알고리즘
- 사회조사분석사 2급 필기 공부방법
- 정렬
- 사이킷런
- 백준 알고리즘
- 사회조사분석사 2급 접수
- 파이썬 정렬
- 사회조사분석사 2급
- 오미크론 자가격리
- 사회조사분석사2급실기신청
- 공모주 청약
- 시물레이션
- 백준
- 공모주
- 현대엔지니어링 수요예측
- 사회조사분석사2급실기신청꿀팁
- 너비우선탐색
- BFS
- 사회조사분석사 2급 독학
- 사회조사분석사 2급 필기 시험시간
- DFS
- 머신러닝
- 사회조사분석사 2급 필기 요약정리
- 벽부수고이동하기 파이썬
- 현대엔지니어링
- 그리디
- 2월공모주
Archives
- Today
- Total
세상을 바꾸는 데이터
[백준 4673번] 셀프 넘버 - 파이썬 본문
문제 링크
https://www.acmicpc.net/problem/4673
문제 풀이
- 문제에서 주어진 생성자가 있는 숫자를 함수를 이용해 만든다.
- 집합 하나를 만들어 생성자가 있는 숫자를 모두 추가한다.
- 전체 set(1부터 10000까지) - 생성자가 있는 숫자 set을 한다. (차집합)
- 생성자가 없는 숫자들의 집합을 오름차순 정렬 후 한 줄에 하나씩 출력한다.
이 문제는 대표적인 구현 및 완전 탐색의 문제로 집합의 개념을 활용해 풀 수 있다.
풀이 코드
# 4673번 셀프 넘버
# 생성자 함수 선언
def d(n):
x = 0
num = list(str(n))
for i in num:
x += int(i)
return n + x
total_set = set()
# 생성자가 있는 숫자 모두 추가
for j in range(1, 10000):
total_set.add(d(j))
# 전체 set에서 생성자가 있는 숫자를 빼는 차집합 이용
ans_set = set(range(1, 10000)) - total_set
# 셀프 넘버 오름차순 정렬 후 한 줄에 하나씩 출력
for k in sorted(ans_set, reverse=False):
print(k)
728x90
반응형
'PS Study > BOJ(백준)' 카테고리의 다른 글
[백준 1316번] 그룹 단어 체커 - 파이썬 (5) | 2022.01.26 |
---|---|
[백준 4796번] 캠핑 - 파이썬 (9) | 2022.01.24 |
[백준 1339번] 단어수학 - 파이썬 (0) | 2022.01.23 |
[백준 1789번] 수들의 합 - 파이썬 (2) | 2022.01.21 |
[백준 13305번] 주유소 - 파이썬 (2) | 2022.01.21 |
Comments