반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 백준 등수매기기
- 장애물인식프로그램 파이썬
- 등수매기기 파이썬
- 백준 점프
- 소프티어 지도자동구축
- jenkins
- 피아노체조 파이썬
- 백준 A->B
- 도커 컨테이너
- 파이썬 평범한배낭
- 백준알파벳파이썬
- 백준
- CRUD
- 백준 바이러스
- MongoDB
- 백준 전쟁-전투
- 프로그래머스
- 지도자동구축 파이썬
- 1987파이썬
- 소프티어 장애물인식프로그램
- 파이썬데이터분석라이브러리
- express
- 백준 전쟁 파이썬
- MySQL완전삭제
- 금고털이 파이썬
- express mongodb
- 백준 피아노체조
- 백준 예산
- 백준 평범한배낭
- 백준 점프 파이썬
Archives
- Today
- Total
바위 뚫는중
[BOJ] 백준 1931. 회의실 배정 Java , Comparator 사용 본문
반응형
https://www.acmicpc.net/problem/1931
난이도 - 실버1
풀이
최대 사용할 수 있는 회의의 최대 개수를 위해서는 시간이 겹치지 않는 선에서 이를 수행해야 하고, 그렇다면 끝나는 시간이 같으면 시작 시간이 늦고(회의 시간이 짧음), 끝나는 시간이 다르다면 더 빨리 끝나는 시간의 회의를 수행해야 한다.
코드
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class Main {
static int N;
static int [][] arr;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
int[][] arr = new int [2][N+1];
// 1번부터 N번까지
// 0은 시작시간, 1은 끝나는시간!
for (int i = 1; i < N+1; i++) {
arr[0][i] = sc.nextInt();
arr[1][i] = sc.nextInt();
}
//Comparator 사용하여 2차원배열 정렬하기
Arrays.sort(arr, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if( o1[1] == o2[1]) { // 끝나는 시간이 같다면 시작시간을 오름차순 정렬
return o1[0] - o2[0];
}
return o1[1] - o2[1]; //끝나는 시간이 다르다면 끝나는 시간을 기준으로 오름차순 정렬
}
});
int count = 0;
int end = -1;
for(int i = 1; i < N +1; i++) {
if (arr[0][i] >= end) { // 끝나는 시간보다 시작 시간이 같거나 크면
end = arr[1][i]; // 끝나는 시간 지정
count ++; // 카운트
}
}
System.out.println(count);
}
}
Comparator 보통 언제 쓰나?
Comparator는 Java에서 제공하는 인터페이스로, 두 개의 객체를 비교하는 데 사용되고, 주로 정렬이나 순서 지정과 관련된 작업에서 활용되니 코테 단골로 알아두자.
🦾 지피티가 정리해준 사항들
- 기본 정렬 기준 외에 사용자 정의 정렬 기준 필요: Java에서는 기본적으로 객체의 natural order(자연적인 순서)에 따라 정렬이 이루어집니다. 그러나 때로는 특정한 기준에 따라 정렬해야 할 필요가 있을 수 있습니다. 이때 Comparator를 사용하여 원하는 비교 기준을 정의할 수 있습니다.
- 객체의 속성을 기준으로 정렬: 객체의 특정 속성에 기반하여 정렬하고 싶을 때 Comparator를 활용할 수 있습니다. 예를 들어, 이름이나 나이, 가격 등의 속성을 기준으로 정렬하고자 할 때 Comparator를 사용하여 비교 로직을 작성할 수 있습니다.
- 정렬 방식 변경: 기본적으로 오름차순으로 정렬되는데, Comparator를 사용하면 내림차순 등 다른 정렬 방식을 선택할 수 있습니다. Comparator를 통해 정렬 방식을 변경할 수 있기 때문에 다양한 정렬 요구사항을 처리할 수 있습니다.
- 다중 정렬 기준 적용: Comparator를 사용하면 여러 개의 정렬 기준을 적용할 수 있습니다. 예를 들어**, 먼저 나이로 정렬한 후, 나이가 같은 경우에는 이름으로 정렬하는 등의 다중 정렬 기준**을 적용할 수 있습니다.
Comparator를 사용하는 상황은 주로 다음과 같습니다.
- 사용자 정의 객체를 정렬해야 할 때
- 객체의 특정 속성을 기준으로 정렬해야 할 때
- 정렬 방식을 변경하고자 할 때
- 다중 정렬 기준이 필요한 경우
반응형
'Algorithms' 카테고리의 다른 글
[이코테] 탐색 DFS/BFS - 음료수 얼려먹기, 미로탈출 Python (0) | 2023.09.27 |
---|---|
[SWEA] 1232. 사칙연산 Java (0) | 2023.07.19 |
[BOJ] 큐 문제 - 11866 요세푸스 문제 0, 1966 프린터 큐 (0) | 2023.02.04 |
[BOJ] 큐 문제 - 18258 큐 2, 2164 카드2 Python3 (0) | 2023.01.30 |
[BOJ] 스택문제 - 1874 스택 수열, 4949 균형잡힌 세상 Python3 (0) | 2023.01.29 |