Level1. K번째 수
문제설명 )
풀이Code )
더보기
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length]; // commands 의 수 만큼 return 해줄 배열 선언
ArrayList<Integer> list = new ArrayList<Integer>(); // 정렬 편하게 하기위한 list 생성
for (int i=0; i<commands.length; i++) { // commands 의 수만큼 반복
for (int j = commands[i][0]-1; j < commands[i][1]; j++) {
list.add(array[j]); // commands 의 첫번째 인덱스값 ~ 두번째 인덱스값 까지의 array 담기
}
Collections.sort(list); // 담아져있는 list 정렬하기
answer[i] = list.get(commands[i][2]-1); // list 의 값 중 commands 의 세번째 인덱스값에 위치한 값 넣기
list.clear(); // for 문을 또 돌아서 값을 넣어야 하기때문에 clear 해주기
}
return answer;
}
}
풀이법 )
- ArrayList를 사용하여 정렬을 편하게 할수있기 때문에 선언을 해준다.
- 2중 for문을 사용하여 commands의 길이만큼 반복하고 for문 자체에 조건문에 j에 commands의 첫번째와 두번째 인덱스의 값을 넣어줌으로 for문을 딱 그만큼만 반복하게끔 한다.
- 담겨있는 list를 정렬 후 answer의 위치에 맞게 넣어주고 list를 clear해주면된다.
※ copyOfRange 메소드를 이용하면 배열에서 원하는 인덱스 ~ 인덱스까지의 값들을 담는법도 있다. ※
2021.11.11 재풀이 코드 )
더보기
import java.util.*;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
// commands 길이만큼 메소드 실행
for(int i=0; i<commands.length; i++) {
// 실제 ?번째와 배열길이는 -1의 차이가 난다.
answer[i] = search(array, commands[i][0]-1, commands[i][1]-1, commands[i][2]-1);
}
return answer;
}
// 배열 정렬 후 숫자찾기 메소드
private int search(int[] arr, int i, int j, int k) {
int num = 0;
// i랑 j의 값이 같으면 자를필요없이 바로 리턴가능
if(i == j) {
num = arr[i];
} else {
ArrayList<Integer> list = new ArrayList<>();
// 주어진 길이사이만큼만 반복
// j 인덱스에있는 수까지 리스트에 넣어야하므로 <= 로 비교한다.
for(int z=i; z<=j; z++) {
list.add(arr[z]);
}
// 넣은값 정렬
Collections.sort(list);
// 문제에서 준 ?번째 값 리턴
num = list.get(k);
}
return num;
}
}
아주조금 빨라졌다.
'알고리즘 > Programmers' 카테고리의 다른 글
[Programmers] Level1. 가운데 글자 가져오기 (Java) (0) | 2021.01.03 |
---|---|
[Programmers] Level1. 2016년 (Java) (0) | 2021.01.02 |
[Programmers] Level1. 체육복 (Java) (0) | 2020.12.28 |
[Programmers] Level1. 완주하지 못한 선수 (Java) (0) | 2020.12.27 |
[Programmers] Level1. 모의고사 (Java) (0) | 2020.12.26 |