제가 공부한 내용을 정리하는 블로그입니다.
아직 많이 부족하고 배울게 너무나도 많습니다. 틀린내용이 있으면 언제나 가감없이 말씀해주시면 감사하겠습니다😁
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만큼 몫을 곱해줍니다.
'코딩테스트 > SWExpert' 카테고리의 다른 글
[코딩테스트] SWEA 1256 K번째 접미어(Java) (0) | 2025.07.01 |
---|---|
[코딩테스트] SWEA 1259 금속막대(Java) (1) | 2025.07.01 |
[코딩테스트] SWEA 1248 공통조상(Java) (0) | 2025.06.30 |
[코딩테스트] SWEA 1210 Ladder1(Java) (1) | 2025.06.30 |
[코딩테스트] SWEA 1247 최적경로(Java) (0) | 2025.06.30 |