
문제에 따라 대체적으로 틀을 잡았다.
class Solution {
public int[] solution(int[] array, int[][] commands) {
for(int[] command : commands) {
int i = command[0];
int j = command[1];
int k = command[2];
// 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고
List<Integer> slice = new ArrayList<>();
for(int x = i; x <= j; x++){
slice.add(array[x]);
}
// 정렬했을 때,
slice.sort();
// k번째에 있는 수
return slice.at(k);
}
}
}
배열을 범위에 따라 잘라낼 때는 copyOfRange(array, start, end) 를 사용하면 된다.
반개방 구간 : [start, end) 을 사용한다.
주어진 i 는 ~"번째" 이고 메서드에서 필요로 하는 값은 인덱스라서 i-1 처리를 해준다.
int[] slice = Arrays.copyOfRange(array, i - 1, j);
int[] 배열에 모든 command에 대한 결과를 미리 만들어서 마지막에 한꺼번에 반환해야 한다.
answer[c] = slice[k - 1];
...
return answer;
import java.util.Arrays;
class Solution {
public int[] solution(int[] array, int[][] commands) {
// 결과를 담을 배열 (command 수 만큼 크기 지정)
int[] answer = new int[commands.length];
for(int c = 0; c < commands.length; c++) {
int i = commands[c][0];
int j = commands[c][1];
int k = commands[c][2];
// 1. i번째부터 j번째까지 자르기
int[] slice = Arrays.copyOfRange(array, i - 1, j);
// 2. 정렬하기
Arrays.sort(slice);
// 3. k번째 수 추출하여 결과 배열에 담기
answer[c] = slice[k - 1];
}
return answer;
}
}
서비스내부의 동작 흐름, 서비스끼리의 요청 흐름, 이벤트 흐름을
대략적으로 나타내는 순서도를 자유롭게 그린 후 공유하여 컨텍스트 바운드를 작성하기로 했다.


