class Solution { public int solution(int[] numbers) { int i = 0; while (i < numbers.length - 1) { int j = i + 1; while (j < numbers.length) { if (numbers[i] < numbers[j]) { int temp = numbers[j]; numbers[j] = numbers[i]; numbers[i] = temp; } j++; } i++; } int answer = numbers[0] * numbers[1]; return answer; } }
문제에서 원하는 것은 원소 두 개를 곱해 만들 수 있는 최댓값이었습니다.
매개변수로 들어온 배열을 내림차순으로 정리하면0번째 index
와1번째 index
에 제일 큰 수와 큰 수의 다음 수가 올 것을 생각하고 문제를 풀었습니다.
swap을 사용하여 i번째(0번) 인덱스를 고정하고 j번째(1번) 인덱스를 활용하여 i번째와 j번째의 값을 비교하여 내림차순으로 정리하였습니다. int j의 값이 numbers.length와 같게 된다면 int i를 증가시켜 그 다음 index와 그 이후 index를 비교하도록 하였습니다.
모든 index를 거치고 나온 numbers[]는 내림차순으로 정렬되어 있기때문에,numbers[0] = 최댓값
,numbers[1] = 최댓값 이후의 값
인 것을 알 수 있습니다.
두 개의 값을 곱하여 문제에서 원하는 최댓값을 반환해주며 문제를 마쳤습니다.