제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
SWEA 1265 달란트2입니다.

포인트

해당 문제는 수학을 사용하는 문제였습니다.

합이 같은 두 수열이라도, 수들의 차이가 적을수록 곱이 더 커집니다.

예를 들어:
- 6을 2와 4로 나누면 곱은 8
- 6을 3과 3으로 나누면 곱은 9 ✅

즉, 곱해지는 수가 서로 비슷할수록 곱의 값은 더 커집니다.
이 성질을 이용하면, 복잡한 탐색 없이 곱의 최댓값을 수학적으로 계산할 수 있습니다.

소스코드

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

public class Q1265 {
    private static int tc, N, P;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        tc = Integer.parseInt(br.readLine());

        StringBuilder sb = new StringBuilder();
        StringTokenizer st;
        for (int t = 1; t <= tc; t++) {
            st = new StringTokenizer(br.readLine());
            N = Integer.parseInt(st.nextToken());
            P = Integer.parseInt(st.nextToken());

            int q = N / P;
            int r = N % P;

            long result = 1;
            for (int i = 0; i < r; i++) {
                result *= (q + 1);
            }
            for (int i = r; i < P; i++) {
                result *= q;
            }

            sb.append("#").append(t).append(" ").append(result).append("\n");
        }

        System.out.println(sb);
    }
}

코드 설명

  • q는 몫, r은 나머지입니다.
  • r만큼 몫+1 값을 곱해주고
  • p만큼 몫을 곱해줍니다.

+ Recent posts