백준이당

[JAVA] 백준 1026번 : 보물

이히당 2023. 6. 20. 14:25

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

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

import java.io.*;
import java.util.*;
import java.util.stream.*;
import java.text.*;


public class Main {
	
	public static void main(String[] args) throws IOException {
    	Scanner sc = new Scanner(System.in);
   	 
		int N = sc.nextInt();
		int[] A = new int[N];
		int[] B = new int[N];
		int[] rank = new int[N];
		int rst = 0;
		//input
		for (int i = 0; i < N; i++) {
			A[i] = sc.nextInt();
		}

		for (int i = 0; i < N; i++) {
			B[i] = sc.nextInt();
		}
		//1. sort a
		Arrays.sort(A);
		//2. ranking b
		
		for (int i = 0; i < N; i++) {
			int cnt = 0;
			for (int j = 0; j < N; j++) {
				if (i == j) { continue;}
				if(B[i] < B[j]) {
					cnt++;
				}
			}
			rank[i] = cnt;
			
		}
		//3. match ranked idx
		for (int i = 0; i<N; i++) {
			rst += B[i] * A[rank[i]]; 
		}
		//	4. print
		System.out.println(rst);

	
		

	
	}
	

}

아니 처음에 문제에서 B배열은 바꾸지 말라해서, 굳이rank배열하나 만들어주고, B에 있는 요소들 등수 매겨준다음에, 적절히 A배열이랑 조합했더니

틀렸다. 진짜 왜틀렸는지를 모르겠다. 진짜 이해안됨. 물어볼 사람도 없고 답답해 죽겠다.

 

import java.io.*;
import java.util.*;
import java.util.stream.*;
import java.text.*;


public class Main {
	
	public static void main(String[] args) throws IOException {
    	Scanner sc = new Scanner(System.in);
    	DecimalFormat df = new DecimalFormat("###.000");
   	 
		int N = sc.nextInt();
		int[] A = new int[N];
		int[] B = new int[N];
		int rst = 0;
		//input
		for (int i = 0; i < N; i++) {
			A[i] = sc.nextInt();
		}

		for (int i = 0; i < N; i++) {
			B[i] = sc.nextInt();
		}
		//1. sort a
		Arrays.sort(A);
		Arrays.sort(B);
		for (int i = 0; i<N; i++) {
			rst += A[i] * B[N-i-1];
		}
		System.out.println(rst);
	
	}
	

}

그래서 B배열도 그냥 정렬했는데 맞았다.

어이없음..ㅋㅋ

이 의도가 아니었겠죠?

728x90