728x90
최솟값 만들기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

문제 설명
주어진 배열 A
, B
를 이용하여 각 원소들의 곱의 합이 최소가 되도록 만드는 문제다.
두 배열을 정렬하여 한 배열에서는 가장 큰 값, 다른 배열에서는 가장 작은 값을 꺼내여 곱하고 누적해준다.
문제 풀이
소스코드 : C++
A
,B
를 정렬한다.A
배열에서는 가장 작은 값을B
배열은 뒤에서부터 가장 큰 값을 꺼내어 answer에 누적하여 더해준다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int solution(vector<int> A, vector<int> B){
int answer = 0;
sort(A.begin(), A.end());
sort(B.begin(), B.end());
int size = B.size();
for(int i=0; i<A.size(); i++){
answer += A[i]*B[size -1 -i];
}
return answer;
}
소스코드 : Python
로직은 C++과 같다 하지만 파이썬은 더욱 간단하다.
zip
은 동일한 개수로 이루어진 자료형을 묶어주는 역할을 한다.
- 2번줄 : 오름차순 정렬된
A
와 내림차순 정렬된B
의 각 원소를a,b
라 할때 두 수를 곱하여 누적해서 더한다.
def solution(A,B):
return sum(a*b for a, b in zip(sorted(A), sorted(B, reverse = True)))
728x90
300x250
728x90
최솟값 만들기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

문제 설명
주어진 배열 A
, B
를 이용하여 각 원소들의 곱의 합이 최소가 되도록 만드는 문제다.
두 배열을 정렬하여 한 배열에서는 가장 큰 값, 다른 배열에서는 가장 작은 값을 꺼내여 곱하고 누적해준다.
문제 풀이
소스코드 : C++
A
,B
를 정렬한다.A
배열에서는 가장 작은 값을B
배열은 뒤에서부터 가장 큰 값을 꺼내어 answer에 누적하여 더해준다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int solution(vector<int> A, vector<int> B){
int answer = 0;
sort(A.begin(), A.end());
sort(B.begin(), B.end());
int size = B.size();
for(int i=0; i<A.size(); i++){
answer += A[i]*B[size -1 -i];
}
return answer;
}
소스코드 : Python
로직은 C++과 같다 하지만 파이썬은 더욱 간단하다.
zip
은 동일한 개수로 이루어진 자료형을 묶어주는 역할을 한다.
- 2번줄 : 오름차순 정렬된
A
와 내림차순 정렬된B
의 각 원소를a,b
라 할때 두 수를 곱하여 누적해서 더한다.
def solution(A,B):
return sum(a*b for a, b in zip(sorted(A), sorted(B, reverse = True)))
728x90
300x250