본문 바로가기

프로그래머스 코딩(자바)/Level 0

Programmers Level 0 - 가장 큰 수 찾기

728x90

문제 설명

정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 
제한사항
  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array 원소 ≤ 1,000
  • array에 중복된 숫자는 없습니다.

 

입출력 예
array result
[1, 8, 3] [8, 1]
[9, 10, 11, 8] [11, 2]

입출력 예 설명

입출력 예 #1

  • 1, 8, 3 중 가장 큰 수는 8이고 인덱스 1에 있습니다.

입출력 예 #2

  • 9, 10, 11, 8 중 가장 큰 수는 11이고 인덱스 2에 있습니다.

 

[ 풀이 1 ]

 

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
    public int[] solution(int[] array) {
        int[] answer = {array[0],0};
        for(int i=1;i<array.length;i++) {
            if(answer[0]<array[i]) {
                answer[0= array[i];
                answer[1= i;
            }
        }
        return answer;
    }
}
 

 

 구하는 값이 2개이므로 리턴값으로 int배열 2개를 선언하고
 첫번째는 배열중에 제일 큰값을 구하기 위해 배열 첫번째 값을 인덱스를 구할 두번째 값은 0으로 초기화
 반복문을 돌면서 큰값을 구하고 큰값의 위치도 구한다.

[ 풀이 2 ]

1
2
3
4
5
6
7
8
9
10
11
import java.util.Arrays;
import java.util.List;
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);
        return new int[] {max, list.indexOf(max)};
    }
}
 

 

  배열을 리스트로 만들고
  List<Integer> list = Arrays.stream(array).boxed().collect(Collectors.toList());

 리스트를 Stream으로 만들어 최대값을 구하고
int max = list.stream().max(Integer::compareTo).orElse(0);

 indexOf() 메서드로 위치를 구한다.
 return new int[] {max, list.indexOf(max)};

 

728x90