본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+ Java언어 내용도 포함되어있습니다. )
https://school.programmers.co.kr/learn/courses/30/lessons/120847
1.문제설명
정수 배열 numbers가 매개변수로 주어집니다. numbers 의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
2. 문제해결 접근
- 배열안의 값 중, 최대값을 만들기 위해서는, 가장큰 값과, 그 다음 큰 값의 곱으로 구할 수 있다.
- Arrays 클래스의 sort를 이용하여 배열 값을 정렬후
- 최대값이 위치할 가장 마지막 인덱스와 그 이전의 인덱스의 곱으로 최대값을 구할 수 있을것 같다.
3.답안 : [언어 : java ]
import java.util.Arrays;
class Solution {
public int solution(int[] numbers) {
int[] arr = numbers;
int num1 = 0;
int num2 = 0;
Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println( arr[i] );
}
num1 = arr[arr.length-1];
num2 = arr[arr.length-2];
System.out.println( num1 );
System.out.println( num2 );
return num1*num2;
}
}
4. C++ 답안
#include <string>
#include <vector>
using namespace std;
int solution(vector<int> numbers) {
sort(numbers.begin(), numbers.end());
int n = numbers.size();
return numbers[n-1] * numbers[n-2];
}
5. C++ 문법 설명과 표현법
5_1) vector의 begin(), end()
vector의 sort()는 <algorithm>라이브러리에 포함되어있어 값을정렬해주는 함수이다.
sort(정렬시작 인덱스, 정렬 마지막 인덱스)
이때. 시작 인덱스와 마지막 인덱스를 반환하는 함수는
begin()과 end()를 사용하여 정렬할 수 있다.
https://swblossom.tistory.com/26
'알고리즘' 카테고리의 다른 글
문자열 뒤집기와벡터 순서 뒤집기 (0) | 2022.10.25 |
---|---|
[프로그래머스]Lv0.짝수는 싫어요 (0) | 2022.10.24 |
[프로그래머스]Lv0.중앙값 구하기 (0) | 2022.10.24 |
[프로그래머스]Lv0.편지 * (0) | 2022.10.23 |
[프로그래머스]Lv0.머쓱이보다 키 큰사람 * (0) | 2022.10.23 |