BOJ 1026 보물

less than 1 minute read

  1. 변수

    int N // 입력받을 배열의 크기
    int[] A = new int[N] // A배열
    int[] B = new int[N] // B배열
    
  2. 구현로직

    • A배열은 오름차순, B배열은 내림차순으로 첫번째 index부터 끝까지 곱하고 더하기 연산해준다

      1. A배열 오름차순, B배열 내림차순 정렬
      2. 첫번째 index부터 A[0]*B[0] + … + A[N-1]B[N-1]
  3. 코드

    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);
       
    	}
    }
    
  4. 느낀점

    • 나는 처음에 answer을 뽑아내는 for문을 돌리다보니 N^2만큼 돌아서 큰 수가 나왔다

      그래서 조건문을 변형하는 방식으로 했는데 다른 친구는 하나의 조건을 활용해서 했다!

      좋은 방법인 것 같아서 참고 :)

      image

Leave a comment