본문 바로가기

컴퓨터 프로그래밍/알고리즘

[프로그래머스] Lv0. 최대값 만들기

■ 문제 

정수 배열 numbers가 매개변수로 주어집니다. 
numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

 

해당 문제는 배열의 정렬을 알면 쉽게 풀수 있는 문제라고 생각한다. 

java에서 제공하는 Arrays클래스의 sort()함수를 이용하여 ①오름차순으로 배열을 정렬한 후 

가장 배열.length-1(가장 큰 값) 과 배열의 그 다음 큰 값인 배열.length-2를 곱해주면 배열의 가장 큰 최대 값이 만들어진다. 

import java.util.Arrays;

class Solution {
    public int solution(int[] numbers) {
        
       int max = 0;
        
       Arrays.sort(numbers);
       
       max = numbers[numbers.length-1] * numbers[numbers.length-2];
        
       return max;
    }
}

배열을 내림차순으로 정렬하는 방법으로 풀어도 된다. 

역순 정렬은 Collections.reverseOrder() 함수를 이용하여 풀면 되는데 해당 함수를 사용하기 위해서는

Collections 클래스를 import 한 후 sort() = 오름차순  reverse() = 내림차순 용도에 맞게 정렬해주면 된다. 

 

👆오름차순

한글순 > 소문자 > 대문자 > 숫자 

 

👇내림차순

 숫자 > 대문자 > 소문자 > 한글순

 

이외의 방법이긴 하나 다른 기준으로 정렬을 하고 싶다면?

해당 방법을 적용하는데 있어서 조금 복잡한 과정을 거치게 될 수도 있다. 

 

sort()함수의 개념을 잡는데 도움이 되었던 출처를 남겨놓고 꺼내봐야겠다. 

 

https://devlog-wjdrbs96.tistory.com/68

 

[JAVA] Array.sort 와 Collections.sort 의 차이

두개의 차이는 그냥 직관적으로도 정렬을 해주는 역할이고, Array.Sort는 배열을 정렬해주는 것이고 Collections.sort는 클래스의 객체를 정렬해주는 것이라고 생각이 든다. 파이썬에서는 sort가 있어서

devlog-wjdrbs96.tistory.com