Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 최댓값 만들기(1) 본문

알고리즘문제/프로그래머스(Java)

[프로그래머스] - 최댓값 만들기(1)

luke-king 2024. 2. 13. 17:58

 

 

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/120847

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제.


 

 

 

 

 

 

풀이.


 

<오름차순 풀이>

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;
    }
}

 

문제를 풀면서 어려운 느낌은 받지 못했다.

다만 오름차순으로 풀지 내림차순으로 풀지 하면 코드가 달라질 것이다.

필자는 오름차순으로 문제를 풀어 봤다.

혹시 몰라 내림차순도 풀어본 코드는 밑에 남겨두겠다.

 

 

<내림차순 풀이>

import java.util.Arrays;
import java.util.Collections;

class Solution {
    public int solution(int[] numbers) {
        int answer = 0;

        Integer[] arr = Arrays.stream(numbers).boxed().toArray(Integer[]::new);
        Arrays.sort(arr, Collections.reverseOrder());

        answer = arr[0] * arr[1];
        
        return answer;
    }
}

 

Integer[] arr = Arrays.stream(numbers).boxed().toArray(Integer[]::new);

위 내림차순 풀이에서 int형 배열로 reverseOrder()를 사용할때 에러가 난다.

그 이유는 "sort" 메소드가 int는 primitive data type으로 혀용되지 않기 때문이다.

그러므로 int형 배열 을 Integer 배열로 boxing(Primitive 자로형 -> Wrapper 클래스) 해줘야 한다.

 

※ 주의: import 를 가끔 까먹을 때가 있는데 꼭 해줘야 한다!!