문제) 최댓값 만들기 (1)
https://school.programmers.co.kr/learn/courses/30/lessons/120847
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

나의 풀이
class Solution {
public int solution(int[] numbers) {
int max = Math.max(numbers[0], numbers[1]);
int secondMax = Math.min(numbers[0], numbers[1]);
for (int i=2; i < numbers.length; i++) {
if(numbers[i] > max) {
secondMax = max;
max = numbers[i];
} else if (numbers[i] > secondMax && numbers[i] != max) {
secondMax = numbers[i];
}
}
return max * secondMax;
}
}
나의 경우 자바에서 정렬하는 메서드를 까먹어서.. 다소 복잡하게 풀이했다.. :)
배열의 첫번째 값이 최댓값일 경우를 대비해서 배열의 첫 번째 값과 두 번째 값 중에서 큰 값을 max, 작은 값을 secondMax에 할당했다.
그 다음에, 배열의 세 번째 값부터 배열의 끝까지 반복하여 최댓값과 두 번째로 큰 값을 찾고,
현재 값이 max보다 크면 max의 값을 secondMax로 이동하고 현재 값을 max에 넣어주었다.
현재 값이 secondMax 값보다 크면서 max의 값과 다른 경우 secondMax에 현재 값을 넣어주었다.
그런 다음 최댓값과 두 번재로 큰 값의 곱을 반환.
Arrays.sort() 메서드를 사용하면 문제 풀이를 간단히 해결할 수 있다.
다른 풀이
import java.util.Arrays;
class Solution {
public int solution(int[] numbers) {
int answer = 0;
Arrays.sort(numbers);
answer = numbers[numbers.length-1] * numbers[numbers.length-2];
return answer;
}
}
Arrays.sort()를 사용해 오름차순 정렬해준 후, 나열된 마지막 원소 2개를 곱해주고 반환.
'프로그래머스 > lv0' 카테고리의 다른 글
[프로그래머스/Java] 배열의 유사도 (0) | 2023.11.15 |
---|---|
[프로그래머스/Java] 자릿수 더하기 (0) | 2023.11.15 |
[프로그래머스/Java] 삼각형의 완성조건 (1) (0) | 2023.11.14 |
[프로그래머스/Java] 배열 두 배 만들기 (0) | 2023.11.09 |
[프로그래머스/Java] 배열 뒤집기 (0) | 2023.11.09 |