학습(0)/C++ 문제풀이

최댓값 2/ 조합 연습

누가 뭐래도 개발자 2025. 3. 12. 01:24

nC2 문제이다.

2개만 뽑으면 되기에 2중 for문을 도는 방법도 있고, 간단하게는 내림차순 정렬 후, 앞에 두 녀석을 곱해줘도 된다.

 

하지만, 나는 조합을 사용해보았다.

#include <string>
#include <vector>
#include <climits>
#include <algorithm>

using namespace std;

int solution(vector<int> numbers) {
    int multi = 1;
    int answer = INT_MIN;
    vector<bool> select(numbers.size(), false);
    select[0] = select[1] = true;

    do
    {
        multi = 1;
        for (int i = 0; i < numbers.size(); ++i)
        {
            if (select[i])
                multi *= numbers[i];
        }
        if (multi > answer)
            answer = multi;

    } while (prev_permutation(select.begin(), select.end()));

    return answer;
}

 

정렬의 경우, 음수릃 고려하지 않기에 예외를 생각해야한다.

 

 return max(numbers[n-1]*numbers[n-2],numbers[0]*numbers[1]);

'학습(0) > C++ 문제풀이' 카테고리의 다른 글

가장 큰 수 찾기 / distance()  (0) 2025.03.12
인덱스 바꾸기/ swap  (0) 2025.03.12
세균증식/ 2와 관련 된 건 비트 연산  (0) 2025.03.11
중복 문자 제거/string::find  (0) 2025.03.11
소인수분해  (0) 2025.03.11