본문 바로가기
algorithm/Programmers

[JAVA] 최댓값 만들기(2)

by 이쟝 2023. 3. 20.

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

 

프로그래머스

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

programmers.co.kr

1. 이중 for문, ArrayList 활용해서 최댓값 구하기

2. 최솟 값 두 개 곱하고, 최댓값 두 개 곱해서 그 두 개 중에서 큰 값 찾기(음수가 없다면 최댓값 두 개 곱해서 출력하면 된다..!)

 

1번

import java.util.ArrayList;

class Solution {
    public int solution(int[] numbers) {
        ArrayList<Integer> multipleList = new ArrayList<>();
        
        // numbers의 각 배열 곱해서 multipleList에 담기
        for(int i=0; i<numbers.length; i++) {
            for(int j=i+1; j<numbers.length; j++) {
                multipleList.add(numbers[i]*numbers[j]);
            }
        }
        
        // multipleList에서 제일 큰 값 찾기
        int answer = multipleList.get(0);
        for(Integer i : multipleList) {
            if(answer < i) answer = i;
        }
        return answer;
    }
}

 

  • ArrayList에서 최댓값 찾을 때 Collections.max()를 이용해서 최댓값을 찾을 수도 있다! (import java.util.Collections)    
    • return Collections.max(multipleList);

2번

import java.util.*;

class Solution {
    public int solution(int[] numbers) {
        Arrays.sort(numbers);

        int min = numbers[0]*numbers[1];
        int max = numbers[numbers.length-2]*numbers[numbers.length-1];

        return Math.max(min, max);
    }
}

- 처음 문제를 봤을 때 이중 for문으로 하면 되겠다 이생각으로 했는데 for문 없어도 정렬 한 뒤에 Math.max( ) 함수로 하면 더 빠르게 할 수 있었다..!

- ArrayList에서 최댓값 Collections.max( ) 와 최솟값 Collections.min( )..! => for문 돌리는 거랑 큰 시간 차이는 없는 것 같았다...!

'algorithm > Programmers' 카테고리의 다른 글

[JAVA] 문자열 정렬하기 (2)  (0) 2023.03.20
[JAVA] 숫자 찾기  (0) 2023.03.20
[JAVA] n의 배수 고르기  (0) 2023.03.19
[JAVA] 제곱수 판별하기  (0) 2023.03.16
[JAVA] 문자열 안에 문자열  (0) 2023.03.15