백준[Java] - 셀프 넘버

이새봄·2022년 8월 25일

코딩 연습

목록 보기
7/14

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		boolean [] sNum = new boolean [10001];
        // 0은 제외하니까 10001까지
		
		for(int i = 1; i<10001; i++) {
			int num = d(i);
			
			if(num < 10001) {
				sNum[num] = true;
			}
		}
		
		for(int i = 1; i<10001; i++) {
			if(sNum[i] == false) {
				System.out.println(i);
			}
		}
		
}
	
	public static int d (int N) {
		int sum = N;
		
		while(N!=0) {
			sum = sum + N%10;
			N = N/10;
		}
		
		return sum;
		
	}
}

언제쯤 구글에서 풀이 검색 안해볼 수 있을까..
일단 이번 문제를 보고 셀프넘버를 배열에 담고 배열에 없는 숫자만 출력하자 ! 라는 접근을 했다.

그런데 ~~ 그 이후에 어떻게 처리를 해야 할지 모르겠어서 고민을 하다,,
구글의 도움을 빌렸다 ~~

구글에서는 배열에 담고 셀프넘버인 수는 true, 아닌 수는 false를 반환하는 식으로 풀이를 했다.

그리고 나는 d함수를 1000자리, 100자리, 10자리, 1자리 각각 계산해서 더하는 식으로 하려고 했는데 천재만재들은 숫자가 0이 될 때까지 10의 자리 수를 깎아내리면서 계산하더라

창조의 어머니는 모방이니까,, 이렇게 하다 보면 나도 직접 천재만재 코드를 짤 수 있는 날이 오겠지??!!

0개의 댓글