정렬 문제
문제링크
풀이 접근
- 입력 받은 값을 a,b 를 저장하는 Data 클래스를 만들어주고 출력할 때 편하게 하기 위해 toString 매소드를 다시 정의해준다.
- ArrayList의 리턴 값을 Data로 해주고 반복문을 돌면서 모든 데이터를 Data에 넣어준다.
- 완성된 ArrayList를 sort해주면 끝
구현 코드
import java.io.*;
import java.util.*;
public class Main {
static class Data {
int a, b;
public Data(int a, int b) {
this.a = a;
this.b = b;
}
@Override
public String toString() {
return a +" "+ b;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringTokenizer st;
List<Data> list = new ArrayList<>();
for(int i=0;i<n;i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
list.add(new Data(a, b));
}
//1) 고품질, 가격 낮음
list.sort((o1, o2) -> o1.a == o2.a ? o1.b - o2.b : o2.a - o1.a);
System.out.println(list.get(0)+" "+list.get(1));
//2) 가격 낮음, 고품질
list.sort((o1, o2) -> o1.b == o2.b ? o2.a - o1.a : o1.b - o2.b);
System.out.println(list.get(0)+" "+list.get(1));
br.close();
}
}
정리
- 람다식과 삼항연산자로 처리했다.
- 람다식 오름차순과 내림차순 정리!
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
Integer[] numbers = {3, 2, 1, 5, 4};
// 오름차순 람다식 정렬
Arrays.sort(numbers, (a, b) -> a - b);
System.out.println(Arrays.toString(numbers));
// [1, 2, 3, 4, 5]
// 내림차순 람다식 정렬
Arrays.sort(numbers, (a, b) -> b - a);
System.out.println(Arrays.toString(numbers));
// [5, 4, 3, 2, 1]
}
}
}
}
댓글남기기