프로그래머스 최솟값 만들기 JAVA 풀이 (그리디, 정렬)

2026. 6. 21. 21:38·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


📌 문제 개요

길이가 같은 두 배열 A, B가 주어진다.

각 배열에서 숫자를 하나씩 선택하여 곱한 뒤 누적 합을 구한다.

 

모든 원소를 한 번씩만 사용해야 하며, 최종 누적 합이 최소가 되도록 만들어야 한다.


📌 접근 방법

처음에는 같은 인덱스의 값끼리 곱하면 된다고 생각할 수 있다.

하지만 이렇게 하면 최솟값이 보장되지 않는다.

 

예를 들어, 같은 인덱스끼리 곱하면

A = [1, 2]
B = [3, 4]
1 * 3 + 2 * 4 = 11

 

반면 아래와 같이 작업시 더 작다.

따라서 작은 수와 큰 수를 매칭하는 방식이 필요하다.

1 * 4 + 2 * 3 = 10

📌 핵심 아이디어

1. 배열 A는 오름차순 정렬

작은 수부터 순서대로 배치한다.

Arrays.sort(A);

2. 배열 B도 오름차순 정렬

이후 뒤에서부터 접근하여 내림차순 효과를 만든다.

Arrays.sort(B);

3. 가장 작은 수와 가장 큰 수를 곱한다

answer += A[i] * B[B.length - 1 - i];
 

예시

A = [1, 2, 4]
B = [4, 4, 5]

계산 큰 수끼리 곱하는 것보다 훨씬 작은 결과를 얻을 수 있다.

1 × 5 = 5
2 × 4 = 8
4 × 4 = 16

합 = 29

📌 전체 코드

import java.util.Arrays;

class Solution {
    public int solution(int[] A, int[] B) {

        Arrays.sort(A);
        Arrays.sort(B);

        int answer = 0;

        for (int i = 0; i < A.length; i++) {
            answer += A[i] * B[B.length - 1 - i];
        }

        return answer;
    }
}
 

📄 정리

  • 최솟값을 만들기 위해서는 작은 수와 큰 수를 매칭해야 한다.
  • A는 오름차순 정렬한다.
  • B는 오름차순 정렬 후 뒤에서부터 접근한다.
  • A[i] * B[n - 1 - i] 방식으로 계산한다.
  • 그리디와 정렬을 활용하는 대표적인 문제이다.
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

프로그래머스 피보나치 수 JAVA 풀이 (DP, 공간 최적화)  (0) 2026.06.22
프로그래머스 올바른 괄호 JAVA 풀이 (스택)  (0) 2026.06.22
프로그래머스 JadenCase 문자열 만들기 JAVA 풀이 (문자열, 구현)  (0) 2026.06.20
프로그래머스 최댓값과 최솟값 JAVA 풀이 (문자열, 구현)  (0) 2026.06.18
프로그래머스 이웃한 칸 JAVA 풀이  (0) 2026.06.18
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 프로그래머스 피보나치 수 JAVA 풀이 (DP, 공간 최적화)
  • 프로그래머스 올바른 괄호 JAVA 풀이 (스택)
  • 프로그래머스 JadenCase 문자열 만들기 JAVA 풀이 (문자열, 구현)
  • 프로그래머스 최댓값과 최솟값 JAVA 풀이 (문자열, 구현)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    Level2
    자료구조
    dp
    정처기오답노트
    정처기실기
    정보처리기사
    기출문제
    수학
    문자열
    level0
    solved.ac
    구현
    알고리즘
    백엔드개발자
    완전탐색
    java
    자바
    배열
    level1
    시뮬레이션
    정처기
    springboot
    피보나치
    브루트포스
    코딩테스트
    프로그래머스
    정렬
    백준
    정보처리기사 실기 기출문제
    실기
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
프로그래머스 최솟값 만들기 JAVA 풀이 (그리디, 정렬)
상단으로

티스토리툴바