BOJ 1026 보물
-
변수
int N // 입력받을 배열의 크기 int[] A = new int[N] // A배열 int[] B = new int[N] // B배열
-
구현로직
-
A배열은 오름차순, B배열은 내림차순으로 첫번째 index부터 끝까지 곱하고 더하기 연산해준다
- A배열 오름차순, B배열 내림차순 정렬
- 첫번째 index부터 A[0]*B[0] + … + A[N-1]B[N-1]
-
-
코드
package baekjoon.Silver; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class BOJ_1026_보물 { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); int[] A = new int[N]; int[] B = new int[N]; int answer = 0; // 답 StringTokenizer st = new StringTokenizer(br.readLine()); for (int k = 0; k < N; k++) { // N만큼 입력받기 A[k] = Integer.parseInt(st.nextToken()); } st = new StringTokenizer(br.readLine()); for (int k = 0; k < N; k++) { // N만큼 입력받기 B[k] = Integer.parseInt(st.nextToken()); } Arrays.sort(A); Arrays.sort(B); for (int i = N - 1, j = 0; i >= 0; i--, j++) { answer += A[i] * B[j]; } System.out.println(answer); } }
-
느낀점
-
나는 처음에 answer을 뽑아내는 for문을 돌리다보니 N^2만큼 돌아서 큰 수가 나왔다
그래서 조건문을 변형하는 방식으로 했는데 다른 친구는 하나의 조건을 활용해서 했다!
좋은 방법인 것 같아서 참고 :)
-
Leave a comment