*문제 출처는 프로그래머스에 있습니다.
문제 제목: 최댓값 만들기(1) (0단계)
문제 사이트: https://school.programmers.co.kr/learn/courses/30/lessons/120817
문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
제한 사항
- 0 ≤ numbers의 원소 ≤ 10,0002 ≤ numbers의 길이 ≤ 100
- 2 ≤ numbers의 길이 ≤ 100
입출력 예
입출력 예 설명
나의 풀이
#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;
}
※ 알아야 할 것
<algorithm> 헤더파일을 이용하면 정렬을 sort로 쉽게 할 수 있다.
answer = numbers[-1] * numbers[-2];
처음에 위에 코드처럼 벡터에서 음수로 인덱스 값을 찾아가려고 했지만 실패했다.
벡터는 임의접근 반복자 유형으로 인덱스를 음수로 접근하는 방법이 안된다.
begin() : 첫번째 원소 위치, end() : 마지막 원소 다음 위치라는 사실을 알고 있으면 쉽게 정렬할 수 있다.
※ 아쉬운 점
없음
'코딩테스트(프로그래머스 & 백준) > 프로그래머스-C++' 카테고리의 다른 글
Programmers / 연속된 수의 합 / C++ (1) | 2024.01.11 |
---|---|
Programmers / 잘라서 배열로 저장하기 / C++ (0) | 2024.01.11 |
Programmers / 옹알이 (1) / C++ (1) | 2024.01.03 |
Programmers / 문자열안에 문자열 / C++ (1) | 2024.01.02 |
Programmers / 문자열 겹쳐쓰기 / C++ (1) | 2024.01.02 |