TIL

Java 향상된 for문과 알고리즘(최댓값 만들기) 오답 노트

oceanflow 2025. 1. 2. 20:37


기존 : for문 안에 3개의 표현이 들어간다. -> (초기값 ; 조건문 ; 증가연산 ;)
for(int i = 0; i < 4; i++) {
System.out.println(i + " 번째 출력!");
}

향상된 for문 : 2개로 줄여줌
int[] numbers = {3, 6, 9, 12, 15};
for(int number: numbers) {
System.out.print(number + " ");
}


int[] numbers = {3, 6, 9, 12, 15};
for(int i = 0; i = numbers.length; i++) {
System.out.print(number[i]);
}

 

 

 

최댓값 만들기

 

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

 

입출력 예 #1

두 수의 곱중 최댓값은 4 * 5 = 20 입니다.

 

class Solution {
    public int solution(int[] numbers) {
        int max = numbers[0];
        int prev = 0;
        for(int i=1; i<numbers.length; i++){
            if(max < numbers[i]){
                prev = max;
                max = numbers[i];
            }else if(prev < numbers[i]){
                prev = numbers[i];
            }
        }

        return prev*max;
    }
}

 

처음에는 배열의 모든 값을 곱하여 값을 비교하려 하였으나 비효율적임을 알게되어 한참을 고민하다 for문에 if문을 돌리고 else if를 두어 두번째 큰 값을 찾을 수 있게 되었다. 둘을 곱하여 return 하였다.