백준(JAVA) 풀이/자료 구조

백준(JAVA) 1026번 보물 풀이

개발윗미 2022. 8. 15. 11:24

Java으로 구현한 1026번 보물 문제 풀이입니다.

 

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

 

1026번: 보물

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

www.acmicpc.net


import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		int n = Integer.parseInt(br.readLine());
		List<Integer> A = new ArrayList<>();
		List<Integer> B = new ArrayList<>();
		
		st = new StringTokenizer(br.readLine());
		for (int i=0; i<n; i++)
			A.add(Integer.parseInt(st.nextToken()));
		st = new StringTokenizer(br.readLine());
		for (int i=0; i<n; i++)
			B.add(Integer.parseInt(st.nextToken()));
		
		int result = 0;
		for (int i=0; i<n; i++) {
			int A_min = Collections.min(A);
			int B_max = Collections.max(B);
			result += A_min * B_max;
			A.remove((Object) A_min);
			B.remove((Object) B_max);
		}
		
		System.out.println(result);
	}
}

 

1. 각 n개의 값을 A리스트, B리스트에 저장한다.

 

2. n번 반복 수행하는데, 하나의 수행 작업은 아래와 같다.

  - A 리스트에서 최솟값을 꺼내 A_min에 할당한다.

  - B 리스트에서 최댓값을 꺼내 B_max에 할당한다.

  - result에 (A_min * B_max) 를 누적한다.

  - A 리스트에서 A_min 값을 삭제하고, B 리스트에서 B_min 값을 삭제한다.

  - 이때 remove() 매개변수 작성 시 (Object) 를 작성해주지 않는다면 A_min 혹은 B_max를 프로그램에서 index로 판별하기 때문에 (Object)를 작성해주어야 한다.