BaekJoon _ 백준 1026 > 탐색> #33 보물

 

보물

 

 

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

 

알고리즘 종류 : 탐색

 

 

1. 문제설명

 

옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다.

길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자.

S = A[0]*B[0] + ... + A[N-1]*B[N-1]

S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안된다.

S의 최솟값을 출력하는 프로그램을 작성하시오.

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

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 
 
 
 
2. 나의 코드

 

 

- arrA : A의 배열을 담는다. (첫번째 배열), 오름차순으로 정렬한다.

- arrB : B의 배열을 담는다. (두번째 배열)

- arrC : B의 배열을 담는다. 하지만, sort와 revese를 이용하여 내림차순으로 정렬한다.

- arrD: B의 배열을 담는다.  index를 구할때, 사용한다.

 

- 내림차순으로 정렬된 C와 원래의 배열 순으로 정렬된 D를 비교한다. C의 첫번째 인자가 있는 곳을 탐색한다. 

- C의 첫번째 인자가 있는 곳이 배열 D에서 가장 큰 원소가 있는 index이므로 이 인덱스를 index에 저장한다. 그 후, -1로 저장 and break; (같은 원소가 있을경우 덮어쓰게 된기 때문.)

- 저장된 index를 가지고 answer[index]에 A의 첫번째 원소를 저장한다.

- 같은 식으로 A의 두번째, 세번째 원소를 차례대로 저장한다.

- 이런식으로 하다보면, B의 가장 큰 원소가 있는 곳과 같은 index에 있는 배열 answer에는 A의 가장 작은 원소가 들어가 있게 된다.

 

import java.util.*;

class Main{
	public static void main(String [] args){
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int [] answer = new int[N];
		int sum=0;
		int index=0;
		ArrayList <Integer> arrA = new ArrayList<>();
		int [] arrB = new int[N];
		ArrayList <Integer> arrC = new ArrayList<>();
		int [] arrD = new int[N];
		for(int i=0;i<N;i++){
			arrA.add(sc.nextInt());
		}
		for(int j=0;j<N;j++){
			arrB[j] = sc.nextInt();
			arrC.add(arrB[j]);
		}
		arrD = Arrays.copyOf(arrB,arrB.length);
		Collections.sort(arrA);
		Collections.sort(arrC);
		Collections.reverse(arrC);

		for(int k=0; k<N; k++){
			for(int b = 0; b<arrD.length; b++){
				if(arrC.get(k) == arrD[b]){
					index = b;
					arrD[b] = -1;
					answer[index] = arrA.get(k);
					break;
				}
			}
		}
		for(int h=0; h<N; h++){
			sum += (answer[h]*arrB[h]);
		}
		System.out.println(sum);
	}
}

 

[출처] https://dreamhollic.tistory.com/entry/BaekJoon-1026-%EB%B3%B4%EB%AC%BC-32?category=676734

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
918 1932 > DP > #37 정수 삼각형 졸리운_곰 2020.04.12 75
917 Programmers > 2018 서머코딩 > #36 예산 졸리운_곰 2020.04.12 66
916 9084 > DP> #35 동전 졸리운_곰 2020.04.07 101
915 BaekJoon _ 백준 1149 > DP> #34 RGB 거리 졸리운_곰 2020.04.02 93
» BaekJoon _ 백준 1026 > 탐색> #33 보물 졸리운_곰 2020.04.02 90
913 Programmers > 연습문제 > #32 N-Queen 졸리운_곰 2020.04.01 61
912 Programmers > 연습문제 > #31 2 x n 타일링 졸리운_곰 2020.04.01 69
911 List of freely available programming books 졸리운_곰 2020.03.31 184
910 How to do pointers in Visual Basic file 졸리운_곰 2020.03.26 76
909 Linked List implementation in Visual Basic 졸리운_곰 2020.03.24 50
908 Programmers > 스택/큐(Stack/Queue) > #30 기능개발 졸리운_곰 2020.03.23 65
907 Programmers > #28 winter recruit > #2 [JAVA] 졸리운_곰 2020.03.23 47
906 Programmers > 깊이/너비 우선 탐색(DFS/BFS) > #27 타겟 넘버 [JAVA] 졸리운_곰 2020.03.09 65
905 Programmers > 완전탐색 > #26 소수찾기(level 2) [JAVA] 졸리운_곰 2020.03.09 69
904 Programmers > #25 winter recruit > #1 [JAVA] 졸리운_곰 2020.03.08 47
903 Programmers > Level 1 > #24 소수찾기 [Python] 졸리운_곰 2020.03.08 65
902 Programmes > #23 문자열 내 마음대로 정렬하기 [Python] 졸리운_곰 2020.03.08 61
901 Programmers > Hash > #22 위장 [JAVA] 졸리운_곰 2020.03.07 58
900 Programmers > Sort > #21 H-Index [JAVA] 졸리운_곰 2020.03.07 61
899 [Programmers] #20 라면공장 [JAVA] 졸리운_곰 2020.03.06 83
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED