프로그래머스 “최댓값 만들기 (2)” 문제 해결과정입니다.
최댓값 만들기 (2)
문제설명
정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.
제한사항
- -10000 ≤ numbers의 원소 ≤ 10,000
- 2 ≤ numbers의 길이 ≤ 100
입출력 예
| numbers | result |
| [1, 2, -3, 4, -5] | 15 |
| [0, -31, 24, 10, 1, 9] | 240 |
| [10, 20, 30, 5, 5, 20, 5] | 600 |
문제 해결과정
본인은 프로그래머스에서 코드를 작성하기에 어려움을 느껴 먼저 이클립스에서 코드를 실행하고 확인 후 프로그래머스 웹 텍스트 에디터로 옮기는 작업을 했다. 이클립스에서 클래스 파일을 생성하고 main에서 실행하여 확인하였다.
이클립스 코드
package Practice;
public class practice7 {
public static void main(String[] args) {
// int[] numbers = {1, 2, -3, 4, -5};
// int[] numbers = {10, 20, 30, 5, 5, 20, 5};
int[] numbers = {-1,2};
int max = Integer.MIN_VALUE;
for(int i = 0; i < numbers.length; i++) {
for(int j = numbers.length - 1; j > i; j--) {
max = max >= numbers[i] * numbers[j] ? max : numbers[i] * numbers[j];
}
}
System.out.println(max);
}
}
최댓값 구하기 (1) 보다 간단히 코드가 쓰여졌다. numbers의 인덱스마다 비교해주기 위해 이중 for문을 사용하였고, for문에서 중복 수를 방지하기 위해 두 번째 for는 끝에서 i까지 작동하도록 코드를 작성했다. 이후에 삼항연산자를 통해서 가장 큰 곱셈값을 구해주었다. 다만 한 가지 막히는 부분이 있었는데 기존 max를 선언할 때 초기값은 0이었다. 하지만 계속 7번 예시에서 실패하였는데, 0보다 작은 값을 생각하지 않았었다… 바로 max의 초기값을 가장 작은 값인 Integer.MIN_VALUE;으로 설정해 주었다. 이후에 통과되었다.
package Practice;
public class practice7 {
public static void main(String[] args) {
int[] numbers = {-1,2};
int max= Integer.MIN_VALUE;
for(int i = 0; i < numbers.length; i++) {
for(int j = i + 1; j < numbers.length; j++) {
max= Math.max(answer, numbers[i] * numbers[j]);
}
}
System.out.println(max);
}
}
max 메소드를 사용하는 방식이다. 첫 번째 코드에서는 삼항연산자로 비교하였는데 max 메소드를 사용하면 더 축소 할 수 있다. 계속 for문이 반복되는 동안 가장 큰게 나오는 값을 answer에 넣는 코드다.
프로그래머스 코드
class Solution {
public int solution(int[] numbers) {
int max = -10000 * 10000;
for(int i = 0; i < numbers.length; i++) {
for(int j = numbers.length - 1; j > i; j--) {
max = max >= numbers[i] * numbers[j] ? max : numbers[i] * numbers[j];
}
}
return max;
}
}
프로그래머스 코드에는 이클립스 코드를 복사해와 print문으로 확인하던 정답을 return으로 변경해주었다. 실행시켜보니 잘 동작하였다.
최신글
![[프로그래머스] 잘라서 배열로 저장하기 - 자바](https://develog.co.kr/wp-content/uploads/2025/01/프로그래머스-잘라서-배열로-저장하기-자바-150x150.png)
![[프로그래머스] 붕대 감기 - 자바](https://develog.co.kr/wp-content/uploads/2024/11/프로그래머스-붕대-감기-자바-150x150.png)
![[프로그래머스] 달리기 경주 - 자바](https://develog.co.kr/wp-content/uploads/2024/11/프로그래머스-달리기-경주-자바-150x150.png)