본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+ Java언어 내용도 포함되어있을 수 있습니다. )
https://school.programmers.co.kr/learn/courses/30/lessons/120862?language=java
1.문제설명
정수 배열 numbers가 매개변수로 주어집니다.
numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
2. 문제해결 접근
- 배열 요소로서 최대값을 구하고자 한다 -> 가장 큰 값의 곱
- sort함수를 이용해 정렬하여 (가장 마지막 요소)와 (그 앞 요소)의 곱을 반환한다
- 요소의 값으로 음수가 들어갈 수 있다.....
- 최대값을 구하므로 값은 양수이다
- 큰 양수 * 더 큰 양수 / 작은 음수 * 더 작은음수 일때 최대값 연산이 가능하다
- 큰 양수의 곱을 담는 변수 a와, 작은 음수의 곱을 답는 변수b를 지정하여
- 두 값 중 최대값을 구하는 max()를 이용하여 최대값을 반환한다.
3.답안 : [언어 : java ]
import java.util.Arrays;
class Solution {
public int solution(int[] numbers) {
int answer = 0;
int positiveProduct = 0; // 양수의 곱을 담는 변수
int negativeProduct = 0; // 음수의 곱을 담는 변수
Arrays.sort(numbers);
// 만약 음수가 있다면 작은 순서대로 곱은 배열의 0, 1 번에 위치할것이다 해당 값의 곱
negativeProduct = numbers[0] * numbers[1];
// 양수의 곱은 오름차순 가장 마지막 인덱스와 그 앞 인덱스의 곱으로 이루어진다.
positiveProduct = numbers[numbers.length-1] * numbers[numbers.length-2];
Math.max()함수를 이용해최대값을 선별하여 answer에 담는다
answer = Math.max( positiveProduct, negativeProduct);
return answer;
}
}
'알고리즘 > [프로그래머스]Lv.0' 카테고리의 다른 글
[프로그래머스]Lv .0 배열 회전시키기 (0) | 2022.11.15 |
---|---|
[프로그래머스]Lv 0. 인덱스 바꾸기 (0) | 2022.11.07 |
[프로그래머스]Lv 0. 문자열 정렬하기 (1) (0) | 2022.11.07 |
[프로그래머스]Lv 0. 중복된 문자 제거 (0) | 2022.11.07 |
[프로그래머스]Lv0. 숨어있는 숫자의 덧셈 (1) (0) | 2022.11.03 |