728x90
문제
풀이
셀프넘버가 아닌 수를 구하는 함수 sum{
받은 숫자 i
받은 숫자 + 각자리 수를 가질 sum
while (더이상 더할 수가 없을 때까지){
각 자리 수를 더하는 식
}
sum 반환
}
main함수 {
배열 생성
10000까지 확인하는 for문{
sum함수를 돌아 셀프 넘버가 안되는 수를 받는 check
if(check가 10000이하일 때) {
해당 숫자 배열을 1로 지정
}
}
배열 다 돌려서 1이 아닌( 셀프넘버인 ) 수 출력
}
코드
public class B4673 {
//셀프넘버가 아닌 수를 구하는 함수
public static int sum (int n) {
int sum = n;
while(n>0) {
sum += n%10; // 나머지 이용하여 각 자리 수 더하기
n/=10; // 나누기
}
return sum; // 셀프 넘버가 아닌 수 반환
}
public static void main(String[] args) {
int arr[] = new int[10001]; // 배열 생성
int i, check;
for(i=1;i<10001;i++) { //셀프넘버가 아닌 수를 구하는 함수
check = sum(i);
if(check < 10001) arr[check]=1; // 셀프 넘버가 아닌 수 1로 지정
}
for(i=1; i<10001; i++) { //셀프 넘버 수 확인
if(arr[i] != 1) // 1이 아니라면 i 출력
System.out.println(i);
}
}
}
728x90
반응형
'문제풀이 > Java' 카테고리의 다른 글
[백준 1913] 달팽이 (0) | 2020.11.15 |
---|---|
[백준 2204] 도비의 난독증 테스트 (0) | 2020.11.07 |
[백준 1436] 영화감독 숌 (0) | 2020.11.07 |
[백준 1453] 피씨방 알바 (0) | 2020.10.10 |
[백준 4344] 평균은 넘겠지 (0) | 2020.09.26 |