[알고리즘] 두 개의 숫자열
2024. 1. 1. 17:42ㆍ알고리즘 풀이/Java
나의 풀이
- longer에 긴 것을 할당해준게 핵심
- Memory Error가 뜨면 index 에러일 수도 있다.
import java.util.Scanner;
import java.io.FileInputStream;
/*
사용하는 클래스명이 Solution 이어야 하므로, 가급적 Solution.java 를 사용할 것을 권장합니다.
이러한 상황에서도 동일하게 java Solution 명령으로 프로그램을 수행해볼 수 있습니다.
*/
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int T;
T=sc.nextInt();
for(int test_case = 1; test_case <= T; test_case++)
{
int n = sc.nextInt();
int m = sc.nextInt();
int[] A = new int[n];
int[] B = new int[m];
for (int i = 0; i < n; i++) {
A[i] = sc.nextInt();
}
for (int i = 0; i < m; i++) {
B[i] = sc.nextInt();
}
int[] longer;
int[] shorter;
if (A.length >= B.length) {
longer = A;
shorter = B;
}
else {
longer = B;
shorter = A;
}
int gap = longer.length - shorter.length;
int max_sum = Integer.MIN_VALUE;
for (int iter = 0; iter <=gap; iter++) {
int sum = 0;
for (int i = 0; i < shorter.length; i++) {
sum += longer[iter + i] * shorter[i];
}
max_sum = Math.max(max_sum, sum);
}
System.out.println("#" + test_case + " " + max_sum);
}
}
}
- 컴파일 성공
if (A.length >= B.length) {
longer = A;
shorter = B;
}
else {
longer = B;
shorter = A;
}
- 컴파일 에러
if (A.length >= B.length) {
longer = A;
shorter = B;
}
else if (A.length < B.length) {
longer = B;
shorter = A;
}
왜 위와 같이 else를 else if로 바꾸면 에러가 나는지 모르겠다.
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PpoFaAS4DFAUq
'알고리즘 풀이 > Java' 카테고리의 다른 글
[알고리즘] 숫자 배열 회전 (0) | 2024.01.01 |
---|---|
[알고리즘] 스도쿠 검증 (0) | 2024.01.01 |
[알고리즘] 최빈수 구하기 (0) | 2024.01.01 |
[알고리즘] 파리퇴치3 (1) | 2024.01.01 |
[알고리즘] 자릿수 더하기 (0) | 2023.12.31 |