Skip to content

Commit 82bf98e

Browse files
committed
[D2] Title: 두 개의 숫자열, Time: 4 ms, Memory: 396 KB -BaekjoonHub
1 parent d691f16 commit 82bf98e

1 file changed

Lines changed: 54 additions & 66 deletions

File tree

Lines changed: 54 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,61 @@
1-
#include<iostream>
2-
#include<vector>
1+
import java.util.*;
2+
import java.io.FileInputStream;
33

4-
using namespace std;
54

6-
int calculate(vector<int>&A, vector<int>&B, int N , int M){
7-
int diff;
8-
int max = -1;
9-
if(N>M) {
10-
diff = N - M;
11-
12-
for(int j=0; j<=diff ; j++){
13-
int sum = 0;
5+
class Solution
6+
{
7+
public static void main(String args[]) throws Exception
8+
{
9+
10+
Scanner sc = new Scanner(System.in);
11+
int T;
12+
T=sc.nextInt();
13+
14+
for(int test_case = 1; test_case <= T; test_case++)
15+
{
16+
int N, M;
17+
N = sc.nextInt();
18+
M = sc.nextInt();
19+
20+
int arr1[] = new int[N];
21+
int arr2[] = new int[M];
22+
23+
for(int i=0; i<N; i++){
24+
arr1[i] = sc.nextInt();
25+
}
1426
for(int i=0; i<M; i++){
15-
sum += A[i+j] * B[i];
27+
arr2[i] = sc.nextInt();
1628
}
17-
if(max < sum) max = sum;
18-
}
19-
}
20-
else {
21-
diff = M - N;
22-
for(int j=0; j<=diff ; j++){
23-
int sum = 0;
24-
for(int i=0; i<N; i++){
25-
sum += A[i] * B[i+j];
29+
30+
int answer=-1;
31+
32+
33+
if(N<=M){
34+
35+
for(int start=0; start<=M-N; start++){
36+
int sum = 0;
37+
for(int i=0; i<N; i++){
38+
sum += arr1[i] * arr2[start+i];
39+
}
40+
answer = Math.max(answer, sum);
41+
}
42+
2643
}
27-
if(max < sum) max = sum;
28-
}
29-
30-
}
31-
32-
return max;
33-
34-
}
35-
36-
int main(int argc, char** argv)
37-
{
38-
int test_case;
39-
int T;
40-
/*
41-
아래의 freopen 함수는 input.txt 를 read only 형식으로 연 후,
42-
앞으로 표준 입력(키보드) 대신 input.txt 파일로부터 읽어오겠다는 의미의 코드입니다.
43-
//여러분이 작성한 코드를 테스트 할 때, 편의를 위해서 input.txt에 입력을 저장한 후,
44-
freopen 함수를 이용하면 이후 cin 을 수행할 때 표준 입력 대신 파일로부터 입력을 받아올 수 있습니다.
45-
따라서 테스트를 수행할 때에는 아래 주석을 지우고 이 함수를 사용하셔도 좋습니다.
46-
freopen 함수를 사용하기 위해서는 #include <cstdio>, 혹은 #include <stdio.h> 가 필요합니다.
47-
단, 채점을 위해 코드를 제출하실 때에는 반드시 freopen 함수를 지우거나 주석 처리 하셔야 합니다.
48-
*/
49-
//freopen("input.txt", "r", stdin);
50-
cin>>T;
51-
/*
52-
여러 개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
53-
*/
54-
for(test_case = 1; test_case <= T; ++test_case)
55-
{
56-
57-
int N, M;
58-
cin >> N >> M;
59-
vector<int> A(N);
60-
vector<int> B(M);
61-
for(int i=0; i<N; i++){
62-
cin >> A[i];
63-
}
64-
for(int i=0;i<M; i++){
65-
cin >> B[i];
66-
}
67-
68-
cout <<"#" << test_case <<" "<< calculate(A,B,N,M) << "\n";
69-
44+
else{
45+
46+
for(int start=0; start<=N-M; start++){
47+
int sum = 0;
48+
for(int i=0; i<M; i++){
49+
sum += arr1[start+i] * arr2[i];
50+
}
51+
answer = Math.max(answer, sum);
52+
}
53+
54+
}
55+
7056

71-
}
72-
return 0;//정상종료시 반드시 0을 리턴해야합니다.
57+
System.out.println("#" + test_case + " " + answer);
58+
59+
}
60+
}
7361
}

0 commit comments

Comments
 (0)