728x90
    
    
  문제 링크: 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
10월 말에 한번 도전했다가 실패한 셀프넘버 문제....
오늘 다시 문제 풀이를 시도했는데
오전에 배운 에라토스테네스의 체가 갑자기 생각나서 True False 미로에 갇혀버리고....
기본적인 것을 놓쳐버리고 만다.
❌ 1~3차시도 실패
여러 번 실패 코드는 보지 않는 게 심신 안정에 좋다....😥
굳이 보고 싶다면 github에 들어가면 되고 정답코드 빠르게 가쟈아☝
❓ 정답은 ??
| 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 | # 1부터 10,000까지 들어있는 base data에서  # 생성자들을 제거하여 셀프넘버를 빼는 원리는 동일 # Keypoint 1 # 생성자가 2개인 아이들이 있기에 여러번 빼려고하면 에러가 생길테니 # 생성자들은 set로 data를 만들어준다. # Keypoint 2 # 각 자리를 10의 각자리 제곱으로 나눠 주어 도출하기 보다는 # str로 만든 다음 하나씩 도출시키는 방법을 이용 base=set(range(1,10001)) new=set() for i in range(1,10001):  #1부터 시작하여 생성자data 만들기     for j in str(i):    #문자열로 바꿔주기         i += int(j)     #하나씩 나온 str를 int로 바꿔며 더하기     new.add(i)      #만들어진 생성자를 new data에 추가 #셀프넘버 = 기존 - 생성자 / 증가하는 순서로 출력해야하니 정렬     self= sorted(base - new) #셀프넘버 하나씩 출력 for i in self:     print(i) | cs | 
💯 풀이 과정
# Keypoint 1
: 생성자가 2개인 아이들이 있기에 여러번 빼려고하면 에러가 생길테니, 생성자들은 set로 data를 만들어준다.
# Keypoint 2
: 각 자리를 10의 각자리 제곱으로 나눠 주어 도출하기 보다는
(여기서.... 완전 잘못해석해서 실패 수순을 밟았었다..)
str로 만든 다음 하나씩 도출시키는 방법을 이용한다.
😎오늘의 한줄평: ㅠㅠㅠㅠㅠㅠ 배운 거 써먹으려 노력하는 건 좋은데 문제 읽고 적합한 걸 찾자
728x90
    
    
  '😁 빅데이터 문제 풀기 & Study > - BAEKJOON 문제' 카테고리의 다른 글
| [10828번] 스택 / python3 (닌텐도 코딩테스트 같은 느낌?) (0) | 2021.11.12 | 
|---|---|
| [2869번] 달팽이는 올라가고 싶다 / python3 (쉽게 풀기) (0) | 2021.11.12 | 
| [1929번] 소수 구하기 / python3 (다시 만난 소수) (0) | 2021.11.11 | 
| [1181번] 단어 정렬 / python3 (2차원 리스트 활용하기) (0) | 2021.11.09 | 
| [1316번] 그룹 단어 체커 / python3 (feat. 다시 도전) (0) | 2021.11.09 |