c언어로 풀고 java로 바꾸기!!
https://www.acmicpc.net/problem/1026
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net
C
#include <stdio.h>
int main() {
int n,i,j,temp,AB = 0;
int arrA[50];
int arrB[50];
scanf("%d", &n);
for (i=0; i<n; i++)
scanf("%d", &arrA[i]);
for (i=0; i<n; i++)
scanf("%d", &arrB[i]);
//배열A 내림차순 정렬
for (i = 0; i < n-1; i++) {
for (j = 0; j < n - (1 + i); j++) {
if (arrA[j] < arrA[j + 1]) {
temp = arrA[j];
arrA[j] = arrA[j + 1];
arrA[j + 1] = temp;
}
}
}
//배열B 오름차순 정렬
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - (1 + i); j++) {
if (arrB[j] > arrB[j + 1]) {
temp = arrB[j];
arrB[j] = arrB[j + 1];
arrB[j + 1] = temp;
}
}
}
//배열 곱
for (i = 0; i < n; i++) {
AB += arrA[i] * arrB[i];
}
printf("%d", AB);
}
java for문 사용
package javastd1;
import java.util.Scanner;
public class bj1026 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int[] arrA = new int[50];
int[] arrB = new int[50];
int n,i,j,temp,AB = 0;
n = scan.nextInt();
for (i=0; i<n; i++)
arrA[i] = scan.nextInt();
for (i=0; i<n; i++)
arrB[i] = scan.nextInt();
//배열A 내림차순 정렬
for (i = 0; i < n-1; i++) {
for (j = 0; j < n - (1 + i); j++) {
if (arrA[j] < arrA[j + 1]) {
temp = arrA[j];
arrA[j] = arrA[j + 1];
arrA[j + 1] = temp;
}
}
}
//배열B 오름차순 정렬
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - (1 + i); j++) {
if (arrB[j] > arrB[j + 1]) {
temp = arrB[j];
arrB[j] = arrB[j + 1];
arrB[j + 1] = temp;
}
}
}
//배열 곱
for (i = 0; i < n; i++) {
AB += arrA[i] * arrB[i];
}
System.out.println(AB);
scan.close();
}
}
java sort 사용
package javastd1;
import java.util.Arrays;
import java.util.Scanner;
public class bj1026sort {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int AB=0;
int[] arrA = new int[n];
int[] arrB = new int[n];
for (int i=0; i<n; i++)
arrA[i] = scan.nextInt();
for (int i=0; i<n; i++)
arrB[i] = scan.nextInt();
scan.close();
Arrays.sort(arrA);
Arrays.sort(arrB);
//배열 곱
for (int i = 0; i < n; i++) {
AB += arrA[i] * arrB[n-1-i];
}
System.out.println(AB);
}
}
for문 사용 버전처럼 n을 앞에 선언할 때 0을 대입해놓고 scan으로 n값을 다시 받으면 결과가 제대로 안나옴 왜지?
n을 선언과 동시에 scan하면 정답이 나온다.
'공부하자 > 알고리즘' 카테고리의 다른 글
[백준] 2217번 로프 C, java (0) | 2022.01.06 |
---|---|
[백준] 10162번 전자레인지 C, java (0) | 2022.01.05 |
[백준] 5585번 거스름돈 C, java (0) | 2022.01.04 |
[백준] 11399번 ATM C, java (0) | 2021.12.30 |
[백준] 14681번 사분면 고르기 C, java (0) | 2021.12.30 |