문제
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 풀이
- 어떤 배열이 더 긴지 길이를 확인하고 먼저 입력받은 배열이 긴 경우, 길이가 같은 경우, 나중에 입력받은 배열이 더 긴 경우로 나눠 탐색을 진행한다.
- 작은 배열을 한 칸씩 옮겨가며 탐색을 진행하여, 곱한 값을 저장한 후, 그 값이 최댓값일 때 결과값을 변경한다.
- 위 과정을 반복하며, 얻은 최댓값을 형식에 맞게 출력한다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= t; tc++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
// 배열 입력
int a_arr[] = new int[a];
int b_arr[] = new int[b];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < a; i++) {
a_arr[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
for (int i = 0; i < b; i++) {
b_arr[i] = Integer.parseInt(st.nextToken());
}
int max = 0;
// 나중에 입력받은 배열이 더 큰 경우
if (a < b) {
for (int i = 0; i <= b - a; i++) {
int start = i;
int tmp = 0;
for (int j = 0; j < a; j++) {
tmp += a_arr[j] * b_arr[start++];
}
max = Math.max(tmp, max);
}
}
// 먼저 입력받은 배열이 더 클 때
else if (a > b) {
for (int i = 0; i <= a - b; i++) {
int start = i;
int tmp = 0;
for (int j = 0; j < b; j++) {
tmp += b_arr[j] * a_arr[start++];
}
max = Math.max(tmp, max);
}
}
// 배열의 크기가 같은 경우
else {
for (int i = 0; i < a; i++) {
max += a_arr[i] * b_arr[i];
}
}
System.out.println("#"+tc+" "+max);
}
}
}'Algorithm > Broute Force' 카테고리의 다른 글
| [Python] 백준 28215번 대피소 (0) | 2024.07.15 |
|---|---|
| [Java] SWEA 1974번 스도쿠 검증 (0) | 2023.06.29 |
| [Python] 백준 19532번 수학은 비대면강의입니다 (0) | 2023.03.27 |
| [Python] 1436번 영화감독 숌 (0) | 2023.02.20 |
| [Python] 백준 7568번 덩치 (1) | 2023.02.20 |