728x90
반응형
문제 : 최솟값 만들기
풀이 방법
두 개의 배열에서 하나는 최대값 하나는 최솟값을 꺼내서 곱하고 더하는 과정을 반복하면 된다.
처음에는 max_element, min_element를 사용해서 테스트케이스와 제출케이스는 성공했지만 효율성에서 오답이 났었다.
그래서 뭘로 하지 하다가 각각 오름차순, 내림차순 정렬을 해서 곱해도 똑같으니 sort로 정렬을 해보자 해서
했더니 정답이었다 .... 이놈의 효율성
greater<int>()를 sort 마지막에 넣으면 내림차순으로 정렬된다.
소스 코드
#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(), greater<int>());
for(int i=0; i<A.size(); i++) {
answer += A[i] * B[i];
}
return answer;
}
728x90
반응형
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Level 2, C++] 숫자의 표현 (0) | 2022.07.26 |
---|---|
[프로그래머스 Level 2, C++] 다음 큰 숫자 (0) | 2022.07.26 |
[프로그래머스 Level 2, C++] N-Queen (0) | 2022.07.13 |
[프로그래머스 Level 1, C++] 신고 결과 받기 (0) | 2022.07.09 |
[프로그래머스 Level 1, C++] 키패드 누르기 (0) | 2022.07.08 |