■ 문제
정수 배열 numbers가 매개변수로 주어집니다.
numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
해당 문제는 배열의 정렬을 알면 쉽게 풀수 있는 문제라고 생각한다.
java에서 제공하는 Arrays클래스의 sort()함수를 이용하여 ①오름차순으로 배열을 정렬한 후
②가장 배열.length-1(가장 큰 값) 과 배열의 그 다음 큰 값인 배열.length-2를 곱해주면 배열의 가장 큰 최대 값이 만들어진다.
import java.util.Arrays;
class Solution {
public int solution(int[] numbers) {
int max = 0;
Arrays.sort(numbers);
max = numbers[numbers.length-1] * numbers[numbers.length-2];
return max;
}
}
배열을 내림차순으로 정렬하는 방법으로 풀어도 된다.
역순 정렬은 Collections.reverseOrder() 함수를 이용하여 풀면 되는데 해당 함수를 사용하기 위해서는
Collections 클래스를 import 한 후 sort() = 오름차순 와 reverse() = 내림차순 용도에 맞게 정렬해주면 된다.
👆오름차순
한글순 > 소문자 > 대문자 > 숫자
👇내림차순
숫자 > 대문자 > 소문자 > 한글순
이외의 방법이긴 하나 다른 기준으로 정렬을 하고 싶다면?
해당 방법을 적용하는데 있어서 조금 복잡한 과정을 거치게 될 수도 있다.
sort()함수의 개념을 잡는데 도움이 되었던 출처를 남겨놓고 꺼내봐야겠다.
https://devlog-wjdrbs96.tistory.com/68
'컴퓨터 프로그래밍 > 알고리즘' 카테고리의 다른 글
[프로그래머스] Lv0. 문자열 뒤집기/배열자르기/정수의 합 (0) | 2022.11.21 |
---|---|
[프로그래머스] Lv0. 배열 뒤집기 (0) | 2022.11.21 |
[프로그래머스] Lv0. 최대값과 최소값 구하기 (0) | 2022.11.21 |