[伯俊解答]1026号宝物(with.JAVA)
白駿1026題ショートカットキー
この問題は,入力した2つの配列の要素をそれぞれ乗じて最大値を求めることである.最初はBの数字が並べ替えられずうろうろしていました.しばらくうろうろしていたが、以前はPythonで同じ問題を解決していたことを覚えていたので、Bの中の首都に並び直し、問題を解決した.△Bの数字を並べ替えても問題ありません.
その後、BufferedReaderで質問に答えましたが、入力された配列は1行のスペースではなく、1つのスペースなので、入力した値をreadline()としてParsingプロシージャを個別に追加する必要があります.だからScannerの方が便利だと思います.
BufferedReaderを使用して入力を受信する場合は、StringTokenizerを使用して入力した値をParsingします.
ソート自体は入力した数字の範囲が大きくないため、Arraysです.sort()を使用しました.
この問題は,入力した2つの配列の要素をそれぞれ乗じて最大値を求めることである.最初はBの数字が並べ替えられずうろうろしていました.しばらくうろうろしていたが、以前はPythonで同じ問題を解決していたことを覚えていたので、Bの中の首都に並び直し、問題を解決した.△Bの数字を並べ替えても問題ありません.
その後、BufferedReaderで質問に答えましたが、入力された配列は1行のスペースではなく、1つのスペースなので、入力した値をreadline()としてParsingプロシージャを個別に追加する必要があります.だからScannerの方が便利だと思います.
BufferedReaderを使用して入力を受信する場合は、StringTokenizerを使用して入力した値をParsingします.
ソート自体は入力した数字の範囲が大きくないため、Arraysです.sort()を使用しました.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class P1026{
public static void main(String[] args) throws IOException {
// 해당 문제는 Scanner를 사용하는게 더 편리할 듯 함
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
int sum = 0; // 마지막에 출력할 숫자(두 배열 원소 곱의 총합)
int arrA[] = new int [n];
int arrB[] = new int [n];
st = new StringTokenizer(br.readLine());
for(int i = 0; i < n; i++)
arrA[i] = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
for(int i = 0; i < n; i++)
arrB[i] = Integer.parseInt(st.nextToken());
br.close();
// 정렬
Arrays.sort(arrA);
Arrays.sort(arrB);
for(int i = 0; i < n; i++)
sum += (arrA[i] * arrB[n-i-1]);
System.out.println(sum);
}
}
Reference
この問題について([伯俊解答]1026号宝物(with.JAVA)), 我々は、より多くの情報をここで見つけました https://velog.io/@luvlik207/백준-문제풀이-1026번-보물-with.-JAVAテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol