❓
java.util.Arrays 클래스의 sort() 메서드를 사용해 본적은 있지만 제대로 된 개념 정리를 한 적은 없다.
sort() 메서드를 정리해본 후 K번째 수 문제를 풀어보고자 한다.
(조만간 배열에 대해서도 제대로 공부해봐야겠다....)
❗
기본 타입 또는 String 배열은 Arrays.sort() 메소드의 매개값으로 지정해주면 자동으로 오름차순 정렬이 된다.
(사용자 정의 클래스 타입일 경우 클래서가 Comparable 인터페이스를 구현하고 있어야 정렬이 된다.)
1. 배열 오름차순 정렬
import java.util.Arrays;
public class Main{
public static void main(String[] args) {
int arr[] = {9,87,3,6,1,47,36};
Arrays.sort(arr);
for (int i : arr) {
System.out.print("["+i+"]");
}
}
}
- 출력결과
2. 배열 내림차순 정렬
import java.util.Arrays;
import java.util.Collections;
public class Main{
public static void main(String[] args) {
//기본타입을 래퍼클래스로 만듦
Integer arr[] = {9,87,3,6,1,47,36};
//두번째 인자로 Collections클래스의 reserveOrder()함수를 이용
Arrays.sort(arr, Collections.reverseOrder());
for (int i : arr) {
System.out.print("["+i+"]");
}
}
}
- Collections: 객체를 다루기 위한 Objects 클래스
- Collections.reserveOrder() : Comparabled 인터페이스를 구현하는 객체 컬렉션에 자연순서(natural ordering)의 역순을 적용하는 comparator 반환
- 출력 결과
3. Array.copyOfRange()
- 특정 배열의 원하는 범위만큼 복사하여 새로운 배열을 만드는 메소드 함수
- copyOfRange(원본배열, 시작 인덱스, 끝 인덱스)
import java.util.*;
public class Main {
public static void main(String[] args) {
int[] arr = {1,5,2,6,3,7,4};
int[] arr1 = Arrays.copyOfRange(arr, 2,5);
}
}
4. 프로그래머스 K번째 수 풀어보기
- # 실행시키면 solution함수를 static으로 변경하라고 나오는데 이유를 잘 모르겠음ㅠㅠ
import java.util.Arrays;
public class Solution{
public static void main(String[] args) {
int[] array = {1,5,2,6,3,7,4};
int[][] commands = {{2,5,3},{4,4,1},{1,7,3}};
int[] answer = solution(array, commands);
for(int i : answer) {
System.out.println( i );
}
}
public static int[] solution(int[] array, int[][] commands) {
//정답 개수만큼의 길이로 배열 생성
int[] answer = new int[commands.length];
//주어진 commands의 길이만큼 반복
for(int i = 0; i < commands.length; i++) {
//1. 자르기
int x = commands[i][0]-1;
int y = commands[i][1];
int[] sliceArray = Arrays.copyOfRange(array, x, y);
//2. 정렬하기
Arrays.sort(sliceArray);
//3. k번째 수 저장
int k = commands[i][2]-1;
answer[i] = sliceArray[k];
}
return answer;
}
}
5. 참고자료
'Basic > 알고리즘' 카테고리의 다른 글
[Programmers] 신고 결과 받기 / HashSet, HashMap (0) | 2023.01.06 |
---|---|
소수점 자르기, 백분율 구하기 / 백준 4344번 (0) | 2021.08.02 |
백준알고리즘 15552번 / Scanner, BufferedReader (0) | 2021.07.18 |