본문 바로가기
프로그래머스/[프로그래머스 - JAVA] Lv.0

[프로그래머스 - JAVA] 가장 큰 수 찾기

by 코딩하는 흰둥이 2023. 3. 10.

 

  •  내 풀이
class Solution {
    public int[] solution(int[] array) {
        int[] answer = {};

        answer = new int[2];

        int max = 0;

        for (int i = 0; i < array.length; i++) {
            if (array[i] > max){
                max = array[i];
                answer[0] = array[i];
                answer[1] = i;
            }
        }

        return answer;
    }
}

코드를 더 줄여보고 싶었는데 이것저것 하다가 실패했다...ㅠ

 

 

  • 다른 사람 풀이
import java.util.*;
import java.util.stream.Collectors;

class Solution {
    public int[] solution(int[] array) {
        List<Integer> list = Arrays.stream(array).boxed().collect(Collectors.toList());
        int max = list.stream().max(Integer::compareTo).orElse(0);
        int index = list.indexOf(max);
        return new int[] {max, index};
    }
}




import java.util.AbstractMap;
import java.util.Map;
import java.util.stream.IntStream;

class Solution {
    public int[] solution(int[] array) {
        return IntStream.range(0, array.length)
                .mapToObj(i -> new AbstractMap.SimpleEntry<>(i, array[i]))
                .max(Map.Entry.comparingByValue())
                .map(entry -> new int[]{entry.getValue(), entry.getKey()})
                .orElseThrow();
    }
}



class Solution {
    public int[] solution(int[] array) {
        int[] answer = new int[2];

        for(int i=0;i<array.length;i++) {
            if(array[i] > answer[0]) {
                answer[0] = array[i];
                answer[1] = i;
            }
        }

        return answer;
    }
}

 

나는 기본코드 틀을 변경하지 않고 코드를 실행하는 것을 지양하고 있지만 참고하라고 stream으로 해결한 분들의 코드를 남겨둔다

댓글