본문 바로가기
CODING/BAEKJOON

[BAEKJOON] 1026번 보물

by snow_white 2022. 2. 11.

 


A 배열은 오름차순, B 배열은 내림차순으로 정렬했을 때의 같은 위치의 인자를 곱해야 합계가 최소값이 된다.

아래 코드를 보면 int형 a[], Integer형 b[] 배열로 선언했다.

내림차순으로 배열을 정렬하기 위해서는 배열을 정렬한 후, 역순으로 List를 재정렬하는 Collections.reverseOrder()를 사용해야 하는데 b배열을 int형으로 선언했을 시에는 Arrays.sort(b, Collections.reverseOrder());와 같이 인식되지 못하는 오류가 발생했다.

 

https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/util/Arrays.html

https://docs.oracle.com/en/java/javase/12/docs/api/java.base/java/util/Collections.html

를 참고해보자.

Arrays에서는 sort(T[] a, Comparator  c) method를 제공해준다. 

Collections에서는 reverseOrder() method를 제공해준다.

sort(T[] a, Comparator  c) 에서 사용되는 T는 Generic Class로 어떠한 객체도 허용하게 해주었지만, int는 객체가 아닌 primitive type이었던 것이다.

따라서 int[]가 아닌 Integer[]로 변경 해주면 컴파일 에러 없이 내림차순이 올바르게 된다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		int sum=0;
		
		int a[] = new int[N];
		Integer b[] = new Integer[N];
		StringTokenizer 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<N; i++) {
			b[i] = Integer.parseInt(st.nextToken());
		}
		
		Arrays.sort(a);
		Arrays.sort(b, Collections.reverseOrder());
		
		for(int i=0; i<N; i++) {
			sum += (a[i])*(b[i]);
		}
		System.out.println(sum);
	}
}

reverseOrder​(Comparator<T> cmp)

[출처]

https://www.acmicpc.net/problem/1026

 

1026번: 보물

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거

www.acmicpc.net

 

'CODING > BAEKJOON' 카테고리의 다른 글

[BAEKJOON] 2178번 미로 탐색  (0) 2022.03.02
[BAEKJOON] 1748번 수 이어 쓰기 1  (0) 2022.02.14
[BAEKJOON] 1120번 문자열  (0) 2022.02.09
[BAEKJOON] 11047번 동전 0  (0) 2022.02.08
[BAEKJOON] 1051번 숫자 정사각형  (0) 2022.02.08

댓글