프로그래머스 “최댓값 만들기 (1)” 문제 해결과정입니다.
최댓값 만들기 (1)
문제설명
정수 배열 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 |
문제 해결과정
본인은 프로그래머스에서 코드를 작성하기에 어려움을 느껴 먼저 이클립스에서 코드를 실행하고 확인 후 프로그래머스 웹 텍스트 에디터로 옮기는 작업을 했다. 이클립스에서 클래스 파일을 생성하고 main에서 실행하여 확인하였다.
이클립스 코드
package Practice;
public class practice2 {
public static void main(String[] args) {
int[] numbers = {1,2,3,4,5};
// int[] numbers = {1,2,3,4,5,5};
// int[] numbers = {0, 31, 24, 10, 1, 9};
int answer = 0;
int j = 0;
int h = 0;
int size = numbers.length; // 5
for(int i = 0; i < size; i++){ // 0 ~ 4
if(j < numbers[i]){
j = numbers[i]; // 가장 큰 수 j
}else if(j == numbers[i]) {
h = numbers[i];
}
}
for(int s = 0; s < size; s++){
if(numbers[s] < j)
if(h < numbers[s]){
h = numbers[s];
}
}
answer = h * j;
System.out.println("answer : " + answer);
}
}
처음에는 for문으로 numbers에서 가장 큰 값 j를 추출하고, 두 번째로 큰 값 h는 numbers가 j보다 작을 때 값을 넣어 구했는데 계속 4번 예시에서 계속 오류가 발생했다. 이 글에서 같은 상황인 것을 확인하고 [1,1]이라는 최댓값이 2개인 경우의 반례를 보고 수정했다. 먼저 예시 하나를 더 추가해서 최대값 두 개가 같은 예시를 잡고 다시 풀었다. 기존과 같이 가장 큰 값 j를 구한 뒤, 만약 for문으로 numbers를 한번 더 돌았을 때 j와 같은 값이 있다면 두 번째로 큰 값으로 잡고 h에 넣는다. 이후 코드는 동일하다. 기존 코드에 아래 코드를 추가해서 문제를 해결하였다.
else if(j == numbers[i]) {
h = numbers[i];
}
프로그래머스 코드
class Solution {
public int solution(int[] numbers) {
int answer = 0;
int j = 0;
int h = 0;
int size = numbers.length; // 5
for(int i = 0; i < size; i++){ // 0 ~ 4
if(j < numbers[i]){
j = numbers[i]; // 가장 큰 수 j
}else if(j == numbers[i]) {
h = numbers[i];
}
}
for(int s = 0; s < size; s++){
if(numbers[s] < j)
if(h <= numbers[s]){
h = numbers[s];
}
}
answer = h * j;
return answer;
}
}
프로그래머스 코드에는 이클립스 코드를 복사해와 print문으로 확인하던 정답을 return으로 변경해주었다. 이후로 실행시켜보니 잘 동작하였다.
참고 – https://school.programmers.co.kr/questions/79547
최신글
![[프로그래머스] 잘라서 배열로 저장하기 - 자바](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)