본문 바로가기
프로그래머스 C++/Level.0

프로그래머스 C++ Level. 0 최댓값 만들기(1)

by yeni_0224 2023. 4. 3.
728x90
반응형

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

 

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

using namespace std;

int solution(vector<int> numbers) {
    int answer = 0;
    
    sort(numbers.begin(), numbers.end());
                              
        answer = numbers[numbers.size() - 1] * numbers[numbers.size() - 2];
          
    
    return answer;
}

이제는 c++에서 제공하는 함수를 열심히 사용하기로 했다. 내가 나아가야할 길...

그것은 제공되는 함수를 열심히 공부하고 연습하는 것...!

sort 함수를 사용해주었다. 마치 내가 배열의 사이즈를 구할 때 length(), size() 함수를 사용하는 것처럼 sort도 이제는 정말 습관도 들이고 많이 쓰이게 될 함수 같다.

 

곱했을 때 최대의 값이 나오기 위해서는 배열의 원소 중 가장 큰 값과, 두번째로 큰 값을 곱해줘야한다.

그래서 sort 함수를 이용해 배열의 원소를 작은 것부터 큰 순서대로 나열시켜주었다. 그 다음 원소의 최대값이 있을 인덱스 번호와, 그 다음 큰 수가 있을 인덱스 번호를 지정해 그 둘을 곱해주었다.

배열의 사이즈를 구하고 거기서 1을 뺀 값이 최대값인 이유

>> 배열의 인덱스는 배열의 원소 갯수보다 1이 작다. (배열의 인덱스는 0부터 시작하기 때문)

그렇다면 배열에서 두번째로 큰 수는 당연히 배열의 사이즈에서 2를 뺀 값이겠지?

 

TMI : 괄호 하나 쓰면 자동으로 괄호를 닫아주는 비주얼 스튜디오와 프로그래머스 덕분에

습관적으로 괄호 버튼 한번만 누른다. 히히

728x90
반응형