study/CodingTest
최댓값의 인덱스 구하기
고기만두(개발자)
2022. 10. 2. 23:09
728x90
반응형
출처 ) 프로그래머스
문제 설명
주어진 입력중 최대값을 구하고, 최대값이 이 위치하는 index 값의 목록을 반환하세요.
입력:
[1, 3, 5, 4, 5, 2, 1]
입력된 목록의 최대값은 5입니다.
5와 동일한 값을 가진 위치는 3번째, 5번째 위치 입니다.
이 위치에 해당하는 index는 [2, 4] 입니다.
출력:
[2, 4]
입출력 예
입력: [1, 3, 5, 4, 5, 2, 1]
출력: [2, 4]
👉🏻 위와 같습니다.
입력: [3, 6, 10, 1, 7, 2, 4, 6, 10, 9]
출력: [2, 8]
👉🏻 최대값 10이 위치하는 곳은 3번째, 9번째 입니다. 이 위치의 index값은 2, 8입니다.
반응형
package programmers;
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
int max = 0;
int count = 0;
int index = 0;
//최댓값 구하기
for(int a : arr){
if (a > max){
max = a;
}
}
//최댓값 개수
for(int a : arr){
if(a == max){
count++;
}
}
//정답 배열에 인덱스 채우기
answer = new int[count];
for(int i = 0; i < arr.length; i++){
if(arr[i] == max){
answer[index] = i;
index++;
}
}
return answer;
}
}
advanced for문에서 a = arr의 해당 번지 값을 그대로 가져옴
생각할 수 있는 가장 순차적이고 현실적인 방법 중 하나.
package programmers;
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
int[] answer = {};
int max = 0;
int count = 0;
List<Integer> list = new LinkedList<>();
//최댓값 구하기
for(int a : arr){
if (a > max){
max = a;
}
}
//최댓값 개수
for(int a : arr){
if(a == max){
count++;
}
}
//정답 리스트에 인덱스 채우기
for(int i = 0; i < arr.length; i++){
if(arr[i] == max){
list.add(i);
}
}
//리스트를 배열로 변환
answer = new int[list.size()];
for(int i = 0; i < answer.length; i++){
answer[i] = list.get(i);
}
return answer;
}
배열대신 linkedlist는 이렇게 활용하기
728x90
반응형