백준이당
[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