[알고리즘문제풀기] 최댓값 만들기 (2)

silver's avatar
Dec 21, 2024
[알고리즘문제풀기] 최댓값 만들기 (2)

문제

내가 작성한 정답

import java.util.Arrays; class Solution { public int solution(int[] numbers) { int answer = 0; Arrays.sort(numbers); int max1 = numbers[0]*numbers[1]; int max2 = numbers[numbers.length-1]*numbers[numbers.length-2]; // 방법1 : if - else if (max1 > max2) answer = max1; else answer = max2; return answer; // 방법 2 : 삼항연산자 return max1>max2? max1 : max2; // 방법 3 : Math.max함수 return Math.max(max1,max2); } }
💡
최대값을 출력하는 함수 Math.max(max1, max2);로 최대값을 구할 수도 있다.
import java.util.Arrays; import static java.util.Arrays.stream; class Solution { public int solution(int[] numbers) { int max1 = stream(numbers) .sorted() .limit(2) .reduce(1, (a, b) -> a * b); // 초기값을 제공하지 않으면 null일 수도 있으므로 type이 OptionalInt가 되어야하기 때문에 초기값을 제공해준다 int max2 = Arrays.stream(numbers) .boxed() // 내림차순 정리하려면 기본타입에서는 제공되지 않아 boxed로 객체타입으로 변경한 후 아래서 sorted해줘야한다. .sorted((a, b) -> b-a) .limit(2) .reduce(1,(a,b)->a*b); return max1 > max2 ? max1 : max2; } }
💡
boxed() 메서드는 기본 데이터 타입의 스트림을 객체 타입의 스트림으로 변환하는 역할을 한다.

다른 사람들이 작성한 정답

import java.util.*; class Solution { public int solution(int[] numbers) { int len = numbers.length; Arrays.sort(numbers); return Math.max(numbers[0] * numbers[1], numbers[len - 2] * numbers[len - 1]); } }
Share article

silver