자바로 백준 2231 풀기

hong030·2023년 9월 23일
0

풀이)
어떤 임의의 수 N이 들어올 때, 해당 수 N 은 K + K의 각 자릿수 합이다.
예로들어 네자릿수 정수 N 이 들어오면 해당 N 을 만드는 생성자는 임의의 K + K의 각 자릿수가 되는 것이다.

즉, 수식으로 보면 N(4) - (k1 + k2 + k3 + k4) = K

즉, 네자릿수 N 의 각 자릿수의 합이 최대일 때는 9 + 9 + 9 + 9 일 것이다.
즉, 우리는 입력받은 정수 N 에 대하여 자릿수의 길이만큼 9를 빼주면 된다.

내 코드)

// i 는 가능한 최솟값인 N - 9 * N의 각 자릿수부터 시작 
for(int i = (N - (N_length * 9)); i < N; i++) {
	int number = i;
	int sum = 0;	// 각 자릿수 합 변수 
	
	while(number != 0) {
		sum += number % 10;	// 각 자릿수 더하기
		number /= 10;
	}
	
	// i 값과 각 자릿수 누적합이 같을 경우 (생성자를 찾았을 경우) 
	if(sum + i == N) {
		result = i;
		break;
	}
}		
profile
자바 주력, 프론트 공부 중인 초보 개발자. / https://github.com/hongjaewonP

0개의 댓글