개발 공부 기록
[SWEA 1959번 / JAVA] 두 개의 숫자열 본문
Question
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpoFaAS4DFAUq
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
💡 Solution
배열의 길이가 더 큰 쪽을 기준으로 생각합니다. A 배열이 [1, 5, 3]이고 B 배열이 [3, 6, -7, 5, 4]라면 서로 마주보는 숫자들을 곱할 수 있는 경우는 [1 * 3, 5 * 6, 3 * -7], [1 * 6, 5 * -7, 3 * 5], , [1 * -7, 5 * 5, 3 * 4] 총 3가지로 M - N + 1번입니다. 반대로 A 배열의 길이가 더 길다면 N - M + 1번의 경우의 수가 있습니다. 이 점을 활용하여 문제를 해결합니다.
💻 Code
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.Identity;
import java.util.StringTokenizer;
public class SWEA1959 {
static int N, M;
static int[] A;
static int[] B;
static int max;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= 10; tc++) {
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
A = new int[N];
B = new int[M];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
A[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
for (int i = 0; i < M; i++) {
B[i] = Integer.parseInt(st.nextToken());
}
max = 0;
solve();
System.out.printf("#%d %d\n", tc, max);
}
}
public static void solve() {
if (M > N) {
for (int i = 0; i <= M - N; i++) {
int idx = i;
int sum = 0;
for (int j = 0; j < N; j++) {
sum += B[idx] * A[j];
idx++;
}
if (sum > max) {
max = sum;
}
}
} else if (M < N){
for (int i = 0; i <= N - M; i++) {
int idx = i;
int sum = 0;
for (int j = 0; j < M; j++) {
sum += A[idx] * B[j];
idx++;
}
if (sum > max) {
max = sum;
}
}
}
}
}
'PS > Implement' 카테고리의 다른 글
[Programmers / JAVA] 기지국 설치 (1) | 2023.11.20 |
---|---|
[SWEA 1979번 / JAVA] 어디에 단어가 들어갈 수 있을까 (0) | 2023.11.19 |
[SWEA 1961번 / JAVA] 숫자 배열 회전 (1) | 2023.11.18 |
[SWEA 1234번 / JAVA] 비밀번호 (0) | 2023.11.17 |
[SWEA 1230번 / JAVA] 암호문3 (1) | 2023.11.17 |