[프로그래머스] 최솟값 만들기
문제요약
길이가 똑같은 배열 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도 한문제도 못풀었는데(너무 어렵게 접근해갖고..^^..) 그간 노력한 게 부질없는 일은 아니었나 싶다.
Author And Source
이 문제에 관하여([프로그래머스] 최솟값 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@coding3392/프로그래머스-최솟값-만들기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)