본문 바로가기

Algorithm/백준 알고리즘

백준 알고리즘 4673 풀이 [자바, Java]

백준 알고리즘 4673 풀이

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

import java.util.Scanner;

class Function {

	static int f(int n) {
		int a;
		int sum = 0;
	
    	while(true) {
		
			if(n == 0) {
				return sum;
			}
			else {
				a = n % 10;
				n -= a;
				n /= 10;
				sum += a;
			}
	}
}

static int d(int x) {
	int result2;
	return result2 = x + Function.f(x);
	}
}

public class Main {

	public static void main(String[] args) {
		
		
		int[] arr = new int[10000];
		
		for(int i = 0; i < 10000; i++) {
			arr[i] = Function.d(i); 
		}
		
		boolean selfNumber = false;
		
		for(int i = 0; i < 10000; i++) {

			if(selfNumber) {
				System.out.println(i - 1);
				selfNumber = false;
			}
			
			for(int j = 0; j < 10000; j++) {
				if(i != arr[j]) {
					selfNumber = true;
					continue;
				}
				else if(i == arr[j]) {
					selfNumber = false;
					break;
				}	
			}
		}
	}
}