• 생각

1. 이 문제를 풀 때 가장 중요하게 알아야 하는 것은 정수 S와 K가 주어졌을 때, 합이 S인 K개의 양의 정수를 찾는 것이다. 어떻게 구할까??

합이 S인 K개의 양의 정수를 찾는 방법은 S를 K로 나눈 몫 K-1개나눈 몫+1 한개의 수인 K개의 수의 곱이 최대의 값을 가진다는 것이다.

 

  • 코드

정답 코드 : 합이 S인 K개의 양의 정수를 찾는 방법은 S를 K로 나눈 몫 K-1개 나눈 몫+1 한개의 수인 K개의 수의 곱이 최대의 값이다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	static int S, K;

	public static void main(String[] args) throws Exception {
		SetData();
		System.out.println(FindMaxValue());
	}

	private static void SetData() throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());

		S = Integer.parseInt(st.nextToken());
		K = Integer.parseInt(st.nextToken());
	}

	private static long FindMaxValue() {
		int q = S / K; // 몫
		int r = S % K; // 나머지
		long max = 1;

		for (int i = 1; i <= K; i++) {
			if (i <= r) {// 나머지 갯수만큼 +1
				max *= (q + 1);
			} else {
				max *= q;
			}
		}

		return max;
	}
}

+ Recent posts