본문 바로가기
백준 풀이

[백준 풀이_Java] 1026 보물

by happyhelen 2021. 10. 22.

 

 

처음 생각

 

문제에 나온대로 배열 B 를 손대지 않고 배열 A 를 재배열해서 풀려고 했는데 너무 어려워서

 

원래 이렇게 어려운 난이도인가 하고 생각했는데

 

알아보니까 배열 B 랑 A, 정렬해서 푸는 문제더만!! 

 

=ㅅ= 이런 표정으로 A 는 오름차순, B 는 내림차순하고, 반복문 안에서 곱하고 더해서 리턴했다

 

 

 

 

내가 푼 방법

 

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 IOException {
        
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		Integer[] A = new Integer[N];
		Integer[] B = new Integer[N];
		Integer total =0;
		
		StringTokenizer st;
		
		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++) {
			total += A[i]*B[i];
		}
		System.out.println(total);

	}

}

 

** 너무 예전에 공부해서 까먹고 있었는데

 

배열을 내림차순으로 정렬하고자 할 때 Collections.reverseOrder() 을 사용하는데

 

이때는 정렬하고자 하는 배열의 타입이 primitive 타입이면 안된다 

 

그래서 int 배열이면 Integer 타입으로 바꾸든지 해야한다