middlemoon
[입문]자바 - 최댓값 만들기(1). 본문

답안 )
class Solution {
public int solution(int[] numbers) {
int first = Integer.MIN_VALUE;
int second = Integer.MIN_VALUE;
for(int num : numbers){
if(num > first){
second = first;
first = num;
}else if(num > second){
second = num;
}
}
int answer = first * second;
return answer;
}
}
과정 )
최댓값을 만드는 문제이다.
입출력에서 보면 알듯이 두 수 곱의 최대값이 나와야하기 때문에 파라미터는 두개를 생성해줘야한다.
일단 first의 수도 최소값으로 나와야한다.
배열 [3,7,5]인 과정에서 numbers 파라미터값에 담긴 배열들이 돌면서 첫번째 first로 들어오게 된다.
그렇게 5까지 돌면서 마지막 first 자리에 7가 들어오게 되고, second는 5가 들어오게 되는 형식이다.

첫번째는 당연히 맨 처음이 3이 맞다. 처음들어오는 수이기 때문에
그 다음 num=7이 들어오게 되면 자연스레 3은 second자리에 밀려나는 형태이다.
그렇다면 왜 first = second;가 안되는 것인가?

(first = second)
→ 기존 first 값이 사라져버리고 second에는 아무 것도 안 남음
→ 결국 두 번째 큰 값을 잃어버려서 로직이 깨짐
결과적으로
즉, second = first;는 기존 1등을 2등 자리로 밀어주는 역할이고,
first = second;라면 그냥 1등을 날려버려서 잘못된 결과가 나온다고 생각하면 된다.
else if에서는 기존 수가 들어오고 난 후, 제일 첫번째 큰수가 나온 뒤, 그 다음 나머지 수도 비교하여 두번째로 가장 큰 수를 num에 넣는 형식으로 진행한다.
'Algorithm > 프로그래머스 Java 입문' 카테고리의 다른 글
| [입문]자바 - 중복된 숫자 개수 (0) | 2025.09.16 |
|---|---|
| [입문]자바 - 자릿수 더하기 (1) | 2025.08.27 |
| [입문]자바 - 세균증식. (0) | 2025.08.25 |
| [입문]자바 - 피자 나눠 먹기(1). (1) | 2025.08.24 |
| [입문]자바 - 뒤집힌 문자열. (0) | 2025.08.23 |
Comments