문제 설명
주어진 입력중 최대값을 구하고, 최대값이 이 위치하는 index 값의 목록을 반환하세요.
입력:
[1, 3, 5, 4, 5, 2, 1]
입력된 목록의 최대값은 5입니다.
5와 동일한 값을 가진 위치는 3번째, 5번째 위치 입니다.
이 위치에 해당하는 index는 [2, 4] 입니다.
출력:
[2, 4]
class Solution {
public int[] solution(int[] arr) {
// 1. 최대값 구하기
int max = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
// 2. 최대값의 갯수 구하기
int n = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == max) {
n++;
}
}
// 3. 최대값의 위치로 배열 선언
int idx = 0;
int[] answer = new int [n];
for (int i = 0; i < arr.length; i++) {
if (arr[i] == max) {
answer[idx] = i;
idx++;
}
}
return answer;
}
}
class Solution {
public int[] solution(int[] arr) {
// 1. 최대값 구하기
int max = 0;
for(int a : arr) if(a > max) max = a;
// 2. 최대값이 몇 개인지 확인하기
int count = 0;
for(int a : arr) if(a == max) count++;
// 3. 배열 만들기
int[] answer = new int [count];
// 4. 배열에 인덱스 채우기
int index = 0;
for(int i = 0; i < arr.length; i++) {
if(arr[i] == max) answer[index++] = i;
}
return answer;
}
}
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
// 1. 최대값 구하기
int max = 0;
for(int a : arr) if(a > max) max = a;
// 2. 리스트 만들기
List<Integer> list = new LinkedList<>();
// 3. 배열에 인덱스 채우기
for(int i = 0; i < arr.length; i++) {
if(arr[i] == max) list.add(i);
}
// 4. 리스트를 배열로 변환
int[] answer = new int[list.size()];
for (int i = 0; i < answer.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
}
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
// 1. 최대값 구하기
int max = 0;
for(int a : arr) if(a > max) max = a;
// 2. 리스트 만들기
List<Integer> list = new LinkedList<>();
for(int i = 0; i < arr.length; i++) {
if(arr[i] == max) list.add(i);
}
// 3. 리스트를 배열로 변환
int[] answer = list.stream().mapToInt(Integer::intValue).toArray();
return answer;
}
}
import java.util.*;
import java.util.stream.*;
class Solution {
public int[] solution(int[] arr) {
// 1. 최대값 구하기
int max = Arrays.stream(arr).max().getAsInt();
// 2. 최대값 배열 만들기
int[] answer = IntStream.range(0, arr.length).filter(i -> arr[i] == max).toArray();
return answer;
}
}