공부하는 스누피
[JAVA] K번째수 - Arrays 본문
https://programmers.co.kr/learn/courses/30/lessons/42748
생각과정
- 배열의 일부분을 추출하고,
- 거기서 k번째 수를 찾는다!
- i, j, k가 이차원 배열로 주어져 있으니 for문을 사용해 순회하면서 k번째 수를 넣는다.
- i, j, k 쌍의 개수를 N으로 하면, 시간복잡도는 O(N)이다.
구현
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 []arr = Arrays.copyOfRange(array, commands[i][0]-1, commands[i][1]);
//배열 정렬
Arrays.sort(arr);
//k번째 숫자 넣기
answer[i] = arr[commands[i][2]-1];
}
return answer;
}
}
결과
Arrays 클래스
Arrays 클래스는 java.util 패키지에 들어있는데, 배열을 다루는 메소드들을 가지고 있다.
위 구현 코드에서는 Arrays 클래스를 직접 사용하기 때문에 따로 import했지만, 일반적으로 배열 객체에 내장되어 있어 바로 사용하면 된다고 한다.
자주 쓰는 메소드는 다음과 같다.
- 정렬
Arrays.sort() => 구현 코드에서는 클래스이름.메소드(배열객체)로 오름차순 정렬했다.
- 출력
Arrays.toString()
- 배열 복사
Arrays.copyOf(원본배열, 복사할 길이)
Arrays.copyOfRange(원본배열, 시작 인덱스, 끝 인덱스) => 끝 인덱스 항목을 포함하지 않으니 주의!
이 외에도 BinarySearch(), equals(), fill() 등 유용한 메소드가 많다.
K번째 수는 매우 간단한 문제지만 덕분에 Arrays 클래스를 복습할 수 있었다.
참고
https://taeil00.tistory.com/193
https://codeman77.tistory.com/64
'Algorithms > 코딩테스트 문제풀이' 카테고리의 다른 글
[JAVA] 뉴스 클러스터링 - HashMap (1) | 2020.07.15 |
---|---|
[JAVA] 크레인 인형뽑기 - Stack (0) | 2020.07.13 |
[JAVA] 모의고사 - DFS (0) | 2020.07.11 |
[JAVA] 완주하지 못한 선수 - HashMap (0) | 2020.07.10 |
[JAVA] 완주하지 못한 선수 - ArrayList (0) | 2020.07.07 |
Comments