풀이 과정
이 문제는 최댓값과 최솟값을 구하는 문제인데 문자열로 주어진다.
그러므로 공백이 나올 때마다 int형 벡터에 넣고, 숫자들을 오름차순으로 정렬해준다.
그럼 v[0]일때 최솟값이 나오고, v[v.size() - 1]일때 최댓값이 나오게 된다.
풀이 1
#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.rbegin(), B.rend());
for(int i = 0; i < A.size(); i++){
answer += A[i] * B[i];
}
return answer;
}
풀이 2 - 시간 초과
이 문제는 효율성 테스트가 있기 때문에 sort를 직접 구현하면
시간초과로 틀리게 된다.
#include <vector>
using namespace std;
int solution(vector<int> A, vector<int> B)
{
int answer = 0;
for(int i = 0; i < A.size(); i++){
for(int j = 0; j < A.size(); j++){
// sort 함수 오름차순 구현
if(A[i] < A[j]){
int temp = A[i];
A[i] = A[j];
A[j] = temp;
}
}
}
for(int i = 0; i < B.size(); i++){
for(int j = 0; j < B.size(); j++){
// sort 함수 내림차순 구현
if(B[i] > B[j]){
int temp = B[i];
B[i] = B[j];
B[j] = temp;
}
}
}
for(int i = 0; i < A.size(); i++){
answer += A[i] * B[i];
}
return answer;
}
'🍞 Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스][Level2] JadenCase 문자열 만들기 c++ (0) | 2022.10.20 |
---|---|
[프로그래머스][Level2] 카카오 프렌즈 컬러링북 c++ (0) | 2022.10.20 |
[프로그래머스][Level2] 최댓값과 최솟값 c++ (0) | 2022.10.20 |
[프로그래머스][Level2] 의상 c++ (0) | 2022.10.20 |
[프로그래머스][Level2] 숫자의 표현 c++ (0) | 2022.10.20 |