본문 바로가기
알고리즘 & 자료구조/백준

백준 4673

by 신재권 2021. 7. 9.
public class Main4673 {

	/* public static int d(int number){
	        int sum = number;

	        while(number != 0){
	            sum = sum + (number % 10); // 첫 째 자리수
	            number = number/10; // 10으로 나누어 첫 째 자리 삭제
	        }

	        return sum;
	    }*/
	
	public static void main(String[] args) {
		int result = 0;
		int[] notSelfNum = new int[10001];

		for (int n = 1; n <= 10000; n++) {
			if (n < 10) {
				result = n + n;
				notSelfNum[result] = n;
			} else if (n < 100) {
				result = n + (n / 10) + (n % 10);
				notSelfNum[result] = n;
			} else if (n < 1000) {
				result = n + (n / 100) + (n % 100 / 10) + (n % 100 % 10);
				notSelfNum[result] = n;
			} else if (n <= 10000) {
				result = n + (n / 1000) + (n % 1000 / 100)
						+ (n % 1000 % 100 / 10) + (n % 1000 % 100 % 10);
				if (result > 10000)
					continue;
				notSelfNum[result] = n;
			}
		}

		for (int n = 1; n <= 10000; n++) {
			if (notSelfNum[n] == 0) {
				System.out.println(n);
			}
		}

	}

}

개선점 : 

위의 주석처리한 소스코드 부분으로 while문으로 자릿수를 짜르면 더욱 시간이 절약된다. 

'알고리즘 & 자료구조 > 백준' 카테고리의 다른 글

백준 11654  (0) 2021.07.10
백준 1065  (0) 2021.07.09
백준 15596  (0) 2021.07.09
백준 4344  (0) 2021.07.08
백준 1546  (0) 2021.07.08