반응형
실행코드
첫 번째 코드
class Solution {
public int solution (int[] numbers) {
Arrays. sort(numbers);
return numbers[numbers.length-1]*numbers[numbers.length-2];
}
}
첫 번째 코드로 풀었지만 너무 날로 먹는 코드 같아서 다른 풀이 방식 추가합니다.
두 번째 코드
class Solution {
public int solution(int[] numbers) {
int answer = 0;
int max = 0;
for(int i = 0; i < numbers.length; i++) {
for (int j = i + 1; j < numbers.length; j++) {
if (numbers[i] * numbers[j] > max) {
max = numbers[i] * numbers[j];
}
}
}
answer = max;
return answer;
}
}
코드 분석
첫 번째 코드 분석
`Arrays.sort(numbers);`:`numbers`
배열을 오름차순으로 정렬합니다. 이를 통해 배열에서 가장 큰 두 수는 배열의 마지막 두 원소에 위치하게 됩니다.
`return numbers[numbers.length - 1] * numbers[numbers.length -2];`
정렬된 배열에서 가장 큰 두 수를 선택하여 곱한 값으로 반환 하며 numbers.length 는 배열의 길이를 나타내며 -1, 과 -2를 이용하여 마지막 수와 마지막에서 두 번째 수를 가져옵니다.
두 번째 코드 분석
int answer = 0;
int max = 0;
최종적으로 반환할 최댓값을 저장할 변수입니다.
for(int i = 0; i < numbers.length; i++) {
for (int j = i + 1; j < numbers.length; j++) {
}
}
중첩 for루프로 두 개의 for루프를 사용하여 배열의 모든 가능한 숫자 쌍을 곱하며 i는 배열의 첫 번째 원소부터 시작, j는 바깥쪽 루프 다음 위치에서 시작합니다.
if (numbers[i] * numbers[j] > max) {
max = numbers[i] * numbers[j];
}
i와 j에 해당하는 두 수를 곱한 결과가 max 보다 크면 max값을 업데이트합니다.
answer = max;
max를 answer에 복사하여 최종적으로 반환할 값을 설정합니다.
728x90