4673 셀프 넘버[함수/Silver 5]
📋 문제 :
💡 문제 풀이 :
생성자 존재 여부 체크를 위한 리스트/배열을 생성한다.
생성자가 존재하면 셀프 넘버가 아니므로 리스트를 True로 초기화한다.
for문을 돌며 해당 수로 부터 생성된 수에 해당하는 리스트값을 False로 변경해준다.
ex) 33 + 3 + 3 = 39 이므로 39는 33이라는 생성자가 존재하므로 39는 True->False
이때 10000보다 작거나 같은 셀프 넘버를 구해야 하므로, 생성된 수가 10001보다 작은지 체크해줘야한다.
for문이 종료되면 True인 리스트 요소의 index를 출력해준다.
💻 코드 :
python 코드
if __name__ == '__main__':
def is_selfnumber(n):
N = [int(i) for i in str(n)]
return n+sum(N)
check = [True]*10001
for i in range(10000):
tmp = is_selfnumber(i+1)
if tmp < 10001:
check[tmp] = False
for i in range(1, 10001):
if check[i]:
print(i)
java 코드
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
boolean[] check = new boolean[10001];
Arrays.fill(check,true);
for(int i = 0; i<10000;i++){
int tmp = is_Selfnumber(i+1);
if(tmp<10001)
check[tmp] = false;
}
for(int i = 1;i<10001;i++){
if(check[i])
System.out.println(i);
}
}
public static int is_Selfnumber(int n){
int N = n;
while(n>0){
N += n%10;
n /=10;
}
return N;
}
}
Author And Source
이 문제에 관하여(4673 셀프 넘버[함수/Silver 5]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yuyeon/4673-셀프-넘버BOJ단계별로-풀어보기함수Silver-5저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)