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
반응형
'study > CodingTest' 카테고리의 다른 글
자연수 뒤집어 배열로 만들기 (자료형 처리 / linkedlist / while) (0) | 2022.12.13 |
---|---|
순열 검사 (배열의 정렬과 비교) (0) | 2022.12.12 |
백준 4153 직각삼각형(Java) (4) | 2022.04.26 |
백준 2480 주사위 세개(Java) (0) | 2022.04.25 |
백준 2525 오븐 시계 (Java) (1) | 2022.04.24 |
댓글