make a splash
article thumbnail
Published 2020. 9. 26. 15:03
[백준 4673] 셀프 넘버 문제풀이/Java
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
profile

make a splash

@vision333

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!