반응형

 

 

 

<코드>

import java.util.*;
public class Main {
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int arr[] = new int[1000054];
		
		for (int i = 1; i <= N; i++) {
			int tmp = sum(i);
			if(arr[tmp] == 0) {
				arr[tmp] = i;
			}else {
				arr[tmp] = Math.min(arr[tmp], i);
			}
		}
		System.out.println(arr[N]);
	}
	public static int sum(int x) {
		int tmp = x;
		while (x > 0) {
			tmp += x%10;
			x /= 10;
		}
		return tmp;
	}
}

 

arr의 크기가 1000054인 이유는 999999의 분해합이 1000053이기 때문입니다.

 

 

https://www.acmicpc.net/problem/2231

 

2231번: 분해합

어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이

www.acmicpc.net

 

반응형

+ Recent posts