문제 설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
제한 사항
- 0 ≤ numbers의 원소 ≤ 10,000
- 2 ≤ numbers의 길이 ≤ 100
입출력 예
| numbers | result |
| [1, 2, 3, 4, 5] | 20 |
| [0, 31, 24, 10, 1, 9] | 744 |
입출력 예 설명
입출력 예 #1
두 수의 곱중 최댓값은 4 * 5 = 20 입니다.
입출력 예 #2
두 수의 곱중 최댓값은 31 * 24 = 744 입니다.
풀이
1. max1과 max2를 0으로 초기화 해줍니다.
(max1 = 현재까지 찾은 가장 큰 값
max2 = 현재까지 찾은 두 번째로 큰 값)
2. for문을 사용해 numbers 배열을 순회합니다.
3. 현재 숫자 num이 max1 보다 크다면 (새로운 최대값을 찾았다면) 두 번째로 큰 값 max2을 업데이트 해줍니다.
→ 기존 max1 값을 max2로 옮겨주고 새로운 최대값(num)을 max1에 저장
4. num이 max1보다 크진 않지만 max2 보다는 크다면 max2 = num;으로 업데이트 해줍니다.
5. 가장 큰 두 수를 곱한 결과를 반환해줍니다.
class Solution {
public int solution(int[] numbers) {
int max1 = 0, max2 = 0; // 가장 큰 두 수 저장
for(int num : numbers){
if(num > max1){
max2 = max1;
max1 = num;
}else if(num > max2){
max2 = num;
}
}
return max1 * max2;
}
}'CodingTest > Programmers' 카테고리의 다른 글
| 모음 제거 [프로그래머스 코딩테스트 입문] (0) | 2025.02.24 |
|---|---|
| 삼각형의 완성조건(1)[프로그래머스 코딩테스트 입문] (0) | 2025.02.13 |
| 점의 위치 구하기 [프로그래머스 코딩테스트 입문] (0) | 2025.02.02 |
| 가위 바위 보 [프로그래머스 코딩테스트 입문] (0) | 2025.01.31 |
| 배열 원소의 길이 [프로그래머스 코딩테스트 입문] (0) | 2025.01.29 |