[프로그래머스] 최솟값 만들기

klean·2020년 10월 21일
0

문제요약

길이가 똑같은 배열 A,B가 주어집니다.
A, B의 각 원소를 모두 한번씩만 사용하여 a * b의 값을 누적합 했을 때 최솟값을 구하세요.

아이디어

사실 찍었다. 정확한 이유는 모르고 큰 숫자들이 작은 숫자들과 곱해져야한다는 생각을 했는데 레벨2 문제라서 단순히 sort로 해결되지 않을까 했다.
A는 오름차순 정렬 B는 내림차순 정렬해서 각 항끼리 곱해주었다.

코드

#include <iostream>
#include<vector>
#include<algorithm>
using namespace std;

bool comp_smaller(int &a, int &b){
    return a<b;
}
bool comp_bigger(int &a, int &b){
    return a>b;
}

int solution(vector<int> A, vector<int> B)
{
    int answer = 0;
    sort(A.begin(), A.end(), comp_smaller);
    sort(B.begin(),B.end(),comp_bigger);

    for(int i = 0;i<A.size();i++){
        answer+=A[i]*B[i];
    }
    return answer;
}

사실 이 문제는 레벨 테스트 1번문항이었다.

음.. 요행으로 찍은 게 맞아서 레벨테스트에서 100점을 가져간 거 같아 찜찜하다.
2번의 경우 연습에서 풀어본 적이 있는 문제라 자신있게 풀었고....
그래도 처음 프로그래머스 환경 입문했을 때(14일 전)는 레벨1도 한문제도 못풀었는데(너무 어렵게 접근해갖고..^^..) 그간 노력한 게 부질없는 일은 아니었나 싶다.

0개의 댓글