알게 된 점
배열의 처음과 끝에 인덱스를 찾고 싶을때? copyOfRange(원본배열, 시작 인덱스, 끝 인덱스)int []origin={1,2,3,4,5} int []arr=Arrays.copyOfRange(origin,2,4) // 3,4 출력
public int[] solution(int[] array, int[][] commands) {
int[] answer = new int[commands.length];
for (int i=0;i<commands.length;i++) {
int start=commands[i][0]-1;
int end=commands[i][1];
int find=commands[i][2];
// System.out.println("end:"+end);
// System.out.println(Arrays.toString(commands[i]));
int[]arr=Arrays.copyOfRange(array,start,end);
Arrays.sort(arr);
// System.out.println(Arrays.toString(arr));
int value=arr[find-1];
// System.out.println(value);
answer[i]=value;
}
return answer;
}
public static void main(String[] args) {
// Arrays.sort정렬은 -> Wrapper class를 사용해야 함 (int 안됨)
Integer nums[]={3,100,5,2,4,7,8};
// 기본 정렬 (오름차순)
Arrays.sort(nums);
System.out.println(Arrays.toString(nums)); // [2, 3, 4, 5, 7, 8, 100]
// 내림차순으로 정렬
// 1. 람다를 이용한 방법 -> 숫자는 compareTo를 사용
Arrays.sort(nums,(o1,o2)->(o2).compareTo(o1));
System.out.println(Arrays.toString(nums)); // [100, 8, 7, 5, 4, 3, 2]
// 2. Collections.reverseOrder()를 이용한 방법
Arrays.sort(nums,Collections.reverseOrder());
System.out.println(Arrays.toString(nums)); // [100, 8, 7, 5, 4, 3, 2]
// 문자 정렬
String strNums[]={"3","100","1","500","8","200"};
Arrays.sort(strNums); // 오름차순 정렬
System.out.println(Arrays.toString(strNums)); // [1, 100, 200, 3, 500, 8] -> 사전순으로 정렬됨
Arrays.sort(strNums,(o1,o2)->(o2).compareTo(o1)); // 내림차순 정렬
System.out.println(Arrays.toString(strNums)); // [8, 500, 3, 200, 100, 1]
// 가장 큰 수를 구하고 싶을때
Arrays.sort(strNums,(o1,o2)->(o2+o1).compareTo(o1+o2));
System.out.println(Arrays.toString(strNums)); // [8, 500, 3, 200, 1, 100]
}
package programmers.sort;
import java.util.*;
public class CollectionsSort {
static class Coffee {
int price;
String name;
public int getPrice() {
return this.price;
}
Coffee(int price, String name) {
this.price=price;
this.name=name;
}
}
public static void main(String[] args) {
// Collections Sort -> arraylist를 정렬하고 싶을대 사용
// 1. 숫자 정렬
List<Integer>arrayList=Arrays.asList(22,44,11,33);
Collections.sort(arrayList); // 오름차순 정렬
System.out.println(arrayList.toString()); // [11, 22, 33, 44]
Collections.sort(arrayList,(o1,o2)->o2.compareTo(o1)); // 내림차순 정렬
System.out.println(arrayList.toString()); // [44, 33, 22, 11]
// 2. 문자 정렬
List<String>strList=Arrays.asList("22","44","11","555");
Collections.sort(strList);
System.out.println(strList.toString());
Collections.sort(strList,(o1,o2)->o2.compareTo(o1));
System.out.println(strList.toString());
// 3. class 정렬
List<Coffee>classList=new ArrayList<>();
classList.add(new Coffee(100,"americano"));
classList.add(new Coffee(5,"tea"));
classList.add(new Coffee(500,"coffee"));
classList.add(new Coffee(1,"bread"));
// 3-1. int에 의해 정렬될때는 -를 이용
Collections.sort(classList,(o1,o2)-> o1.getPrice()-(o2.getPrice())); // 오름차순 정렬
for (Coffee coffee:classList) {
System.out.println(coffee.name+" "+coffee.getPrice());
}
/*
class의 숫자에 의한 오름차순 정렬
bread 1
tea 5
americano 100
coffee 500
*/
System.out.println("=====================");
Collections.sort(classList,(o1,o2)-> o2.getPrice()-(o1.getPrice())); // 내림차순 정렬
for (Coffee coffee:classList) {
System.out.println(coffee.name+" "+coffee.getPrice());
}
/*
class의 숫자에 의한 내림차순 정렬
coffee 500
americano 100
tea 5
bread 1
*/
System.out.println("=====================");
// 3-2. 문자에 의한 정렬
Collections.sort(classList,(o1,o2)->(o1.name).compareTo(o2.name)); // 오름차순 정렬
for (Coffee coffee:classList) {
System.out.println(coffee.name+" "+coffee.getPrice());
}
/*
class의 문자에 의한 오름차순 정렬
americano 100
bread 1
coffee 500
tea 5
*/
System.out.println("=====================");
Collections.sort(classList,(o1,o2)->(o2.name).compareTo(o1.name)); // 내림차순 정렬
for (Coffee coffee:classList) {
System.out.println(coffee.name+" "+coffee.getPrice());
}
/*
class의 문자에 의한 내림차순 정렬
tea 5
coffee 500
bread 1
americano 100
*/
}
}
import java.util.*;
class Solution {
public String solution(int[] numbers) {
String answer = "";
ArrayList<String>arraylist=new ArrayList<>();
for (int i:numbers) {
arraylist.add(Integer.toString(i));
}
// Collections.sort로 정렬
Collections.sort(arraylist,(o1,o2)->(o2+o1).compareTo(o1+o2));
// answer에 넣기
// System.out.println(arraylist);
if (arraylist.get(0).equals("0")) return "0";
for (String s:arraylist) {
answer+=s;
}
return answer;
}
}
// HashMap 입력
for (int i=0;i<genres.length;i++) {
String key=genres[i];
int value=plays[i];
genre.put(key,genre.getOrDefault(key,0)+value);
}
// value 기준으로 오름차순 정렬
// value 기준으로 오름차순하기 위해서는 key에 대한 arraylist를 만들어야 함.
List<String>arraylist=new ArrayList<>(genre.keySet());
// 정렬
Collections.sort(arraylist,(o1,o2)->genre.get(o2).compareTo(genre.get(o1)));
System.out.println(genre.toString());