공부함
알고리즘 문제 풀어보기 - 백준 #1026번: 보물 (JAVA) 본문
https://www.acmicpc.net/problem/1026
1026번: 보물
첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거
www.acmicpc.net
'B에 있는 수는 재배열하면 안 된다.'
라는 조건을 빼먹고
1. A는 오름차순으로
2. B는 내림차순으로 정렬후 둘을 비교
3. 각 요소끼리 곱하기
했는데
정답 처리가 되었다.
이게 맞나? B를 재배열 하는 것인데?
질문 검색에서 찾아보니 딱히 문제는 없다고들 하지만 찝찝하다.
알고리즘 문제풀이 실력이 늘면 없이도 가능하게 다시 풀어보는걸로..
import java.util.Scanner;
public class Treasure_1026 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n= scanner.nextInt();
int[] A= new int[n];
int[] B= new int[n];
for(int i=0;i<n;i++) {
A[i]=scanner.nextInt();
}
for (int j=0;j<n;j++) {
B[j]=scanner.nextInt();
}
int min=0;
int index=0;
int temp=0;
for (int k=0;k<n;k++) {
min=101;
for(int h=k;h<n;h++) {
if(min>A[h]) {
min=A[h];
index=h;
}
}
temp=A[k];
A[k]=A[index];
A[index]=temp;
}
int max=0;
for (int q=0;q<n;q++) {
max=-1;
for(int w=q;w<n;w++) {
if(max<B[w]) {
max=B[w];
index=w;
}
}
temp=B[q];
B[q]=B[index];
B[index]=temp;
}
int[] result=new int[n];
int count=0;
for(int t=0;t<n;t++) {
result[t]=A[t]*B[t];
count+=result[t];
}
System.out.println(count);
}
}
느낀점: 정렬 알고리즘을 대충 알긴 하는데 뭐를 언제 써야할지 잘 모르겠다.
정렬 알고리즘 공부를 다시 하고 문제를 풀면서 외워야겠다.
'알고리즘 > 백준' 카테고리의 다른 글
알고리즘 문제 풀이 - 백준 #2869번: 달팽이는 올라가고 싶다 (JAVA) (0) | 2022.02.22 |
---|---|
알고리즘 문제 풀어보기 - 백준 #1193번: 분수 찾기(JAVA) (0) | 2022.02.02 |
알고리즘 문제 풀어보기 - 백준 #2839번: 설탕 배달 (JAVA) (0) | 2022.01.17 |
알고리즘 문제 풀어보기 - 백준 #11497번: 통나무 건너뛰기 (JAVA) (0) | 2022.01.15 |
알고리즘 문제 풀어보기 - 백준 #11047번: 동전 0 (JAVA) (0) | 2022.01.10 |