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
- 알고리즘
- 취득후기
- GatherTown
- 세그먼트트리
- 다이나믹프로그래밍
- 자바PS
- DFS
- 시뮬레이션
- QUICKSTARTGUIDE
- 우선순위큐
- PS
- YBMCOS
- 백준코딩테스트
- deque
- 완전탐색
- 백준
- COSPROJAVA1급
- 재귀함수
- COSPRO
- 엘라스틱서치
- 이젠 골드구현도 어렵네..
- 게더타운시작
- 구현
- 다익스트라
- 01BFS
- BFS
- spring
- 네트워크플로우
- java
- dp
Archives
- Today
- Total
공부공간
JUNGOL - 1828 ) 냉장고 본문
http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1101&sca=3050
PriorityQueue 연습문제로 class의 특정 인스턴스를 기준으로 정렬하였다.
냉장고 문제는 최고 보관온도와 최저 보관온도를 각각가진 화학물질을
일정한 온도를 유지하는 냉장고에 보관하되, 최저의 냉장고수를 출력하는 문제이다.
입력을 받을때에 최저 보관 온도를 기준으로 오름차순 정렬하여 큐에 넣었다.
큐에서 하나씩 빼면 항상 최저 보관온도의 최솟값이 보장된다.
하나의 화학약품에 대해서 최고보관온도를 넘으면 냉장고 수가 한대더 필요하게된다.
( 큐에서 뽑았을때에 이전것의 최댓값이 현재의 최솟값 보다 작은경우 )
그런게 아니라면 이전냉장고로 현재약품을 보관할수 있다.
이전냉장고의 최댓값은 현재의 최댓값으로 업데이트해야한다.
전체 Queue가 빌때까지 위 과정을 반복한다.
package practice;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class 냉장고 {
static class pos{
int min,max;
public pos(int min, int max) {
this.min =min;
this.max =max;
}
}
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int t = Integer.parseInt(st.nextToken());
PriorityQueue<pos> pq = new PriorityQueue<>(1,
new Comparator<pos>(){
public int compare(pos p1, pos p2) {
if(p1.min > p2.min) return 1;
else return -1;
}
}
);
for(int index = 0 ; index < t ; index++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
pq.add( new pos (a,b));
}
int answer =0; int min =Integer.MIN_VALUE,max =Integer.MIN_VALUE;
while(!pq.isEmpty()) {
pos now = pq.poll();
if(now.min > max) {
answer ++; // 냉장고가 필요한 경우
// 다음은
min = now.min;
max = now.max;
continue;
}
if(max > now.max) {
max = now.max;
}
}
System.out.println(answer);
}
}
'알고리즘 > 구현,시뮬' 카테고리의 다른 글
BOJ - 17822 ) 원판 돌리기 (0) | 2020.02.19 |
---|---|
BOJ - 17779 ) 게리맨더링 2 (0) | 2020.02.18 |
Algorithm 풀이를 위한 JAVA 자료구조 정리 (2) | 2020.02.10 |
SWEA ) 대관이의 대량할인 (0) | 2020.02.09 |
SWEA ) 줄기세포 배양 (2) | 2020.02.09 |
Comments