일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Android
- androidstudio
- bitmap
- BOJ
- Canvas
- CS
- Database
- DBeaver
- DP
- Ecilpse
- Eclipse
- firebase
- git
- github
- GooglePlayServices
- gradle
- IDE
- IntelliJ
- java
- json
- kotlin
- level2
- linux
- mariadb
- MYSQL
- Paint
- permission
- python
- Sorting
- sourcetree
Archives
will come true
[프로그래머스 / Level1] K번째 수 (Java) 본문
728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/42748?language=java
핵심 키워드
- 정렬
- Arrays 클래스
- Arrays.copyOfRange()
- Arrays.sort()
풀이
- 배열 i부터 j까지 자르기 (i부터 j까지 범위 복사)
- 배열 오름차순 정렬
- 배열에서 k번째 요소 추출
코드
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++){
// 배열 i부터 j까지 자르기 (범위 복사)
int[] arr = Arrays.copyOfRange(array, commands[i][0] - 1, commands[i][1]);
// 오름차순 정렬
Arrays.sort(arr);
// k번째 수 찾기
answer[i] = arr[commands[i][2] - 1];
}
return answer;
}
}
- i번째 부터 j번째까지 배열을 잘라야하는데, 배열의 index는 0부터 시작하기 때문에 예를들어 눈으로 봤을 때 1번째 부터 3번째까지 배열을 자르고 싶다면 실제로는 index 0부터 2까지 잘라야한다.
- 추가로, 이때 Arrays.copyOfRange(int[] original, int from, int to) 메서드는 지정된 범위의 끝 자리는 포함하지 않기 때문에 마지막 to값은 원하는 끝 자릿수+1을 해줘야 한다.
728x90
'Algorithm' 카테고리의 다른 글
[프로그래머스 / Level1] 숫자 문자열과 영단어 (Java) (0) | 2021.11.06 |
---|---|
[프로그래머스 / Level1] 없는 숫자 더하기 (Java) (0) | 2021.11.05 |
[프로그래머스 / Level1] 완주하지 못한 선수 (Java) (0) | 2021.11.05 |
[프로그래머스 / Level1] 모의고사 (Java) (0) | 2021.11.05 |
[프로그래머스 / Level1] 소수 만들기 (Java) (0) | 2021.11.05 |
Comments