안드로이드 개발자의 창고
[프로그래머스] K번째 수(Lvl.1) - Java 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
import java.util.Arrays;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
for(int i = 0; i < commands.length; i++){
int temp[] = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
Arrays.sort(temp);
answer[i] = temp[commands[i][2]-1];
}
return answer;
}
}
Arrays.copyOfRange(원본 배열명, 복사 시작할 인덱스, 복사 끝 인덱스)
: 원본 배열에 대하여 복사 시작할 인덱스부터 복사 끝 인덱스까지 복사 후 붙여넣음. 값에 의한 복사이므로 복사한 배열의 값을 바꿔도 원본 배열에는 영향을 미치지 않음.
commands[i][0]-1 인 이유?
: commands 배열 값들이 1부터 시작하기 때문. -1을 해주지 않으면 실제 배열의 인덱스+1 이 되어버림.
예) array[1, 5, 2, 6, 3, 7, 4] 의 2번째부터 5번째 숫자까지를 복사하려면 실제 배열의 인덱스는 1~4가 됨. 즉 -1을 안해주면 [2,6,3,7]가 됨. 문제가 원하는 배열은 [5,2,6,3]임.
Arrays.sort(배열명)
: 배열을 오름차순 정렬하는 메소드.
내림차순으로 정렬하려면 Arrays.sort(배열명, Collections.reverseOrder())
또는 람다식으로 Arrays.sort(arr, (i1, i2) -> i2 - i1)
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 정수 제곱근 판별(Lv.1) - 코틀린 (0) | 2023.05.08 |
---|---|
[프로그래머스] 특이한 정렬(Lv.0) - 파이썬 (0) | 2023.05.08 |
[프로그래머스] 겹치는 선분의 길이(Lv.0) - 파이썬 (2) | 2023.05.08 |
[프로그래머스] 2019 카카오 개발자 겨울 인턴쉽_크레인 인형뽑기 (0) | 2023.05.07 |
[프로그래머스] 안전지대(Lv.0) - Python (0) | 2023.05.07 |