본문 바로가기

swea

정올- 1828.냉장고

728x90

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1101&sca=99&sfl=wr_hit&stx=1828 

 

JUNGOL

 

www.jungol.co.kr

문제

N개의 화학 물질 C1, C2, …, Cn이 있다. 

이들 각각은 보관되어야 할 온도가 각기 다른데, 각 Ci마다 최저 보관 온도 xi와 최고 보관 온도 yi가 정해져 있다. 

즉 Ci는 온도 xi이상, yi이하의 온도에서 보관되어야만 안전하다.

 

이 화학 물질들을 모두 보관하기 위해서는 여러 대의 냉장고가 필요한데 가능하면 적은 수의 냉장고를 사용하고 싶다. 

이를 해결하는 프로그램을 작성하시오.

 

입력형식

첫줄에 화학물질의 수 N이 입력된다. N의 범위는 1이상 100 이하이다. 

두 번째 줄부터 N+1줄까지 최저보관온도와 최고보관온도가 입력된다. 

보관온도는 -270° ~ 10000°이며, 각 냉장고는 임의의 정해진 온도를 일정하게 유지할 수 있고, 냉장고는 아주 크다고 가정한다.

 

출력형식

첫줄에 최소로 필요한 냉장고의 대수를 출력한다.

 

 

package a0817;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main_Jo_냉장고_서울_12반_이서영 {
	
	static int n;
	static Chem[] arr;
	static StringTokenizer st;
	
	static class Chem implements Comparable<Chem>{ //comparable인터페이스 적용
		int low;
		int high;
		Chem(int low, int high){
			this.low = low;
			this.high = high;
		}
		
		@Override
		public int compareTo(Chem o) {
			
			if(this.high==o.high) {
				return Integer.compare(this.low, o.low); //high가 같을 땐 낮은 온도 기준으로 오름차순 정렬 
			}
			
			return Integer.compare(this.high, o.high); //high 기준으로 오름차순
		}
	}
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		n = Integer.parseInt(br.readLine());
		arr = new Chem[n];
		for(int i=0; i<n; i++) {
			
			st = new StringTokenizer(br.readLine());
			arr[i] = new Chem(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()));
			
		}
		
		Arrays.sort(arr); // sort를 시켜준다
		int ref = 0; //냉장고의 개수 
		for(int i=0; i<arr.length;i++) {
			
			Chem ch = arr[i]; 
			//int idx = i;
			int idx = i;
			ref++; 
			i++;
			while(i<arr.length) {
				if(arr[i].low>=arr[idx].high) { // idx번쨰의 high보다 그 뒤에 있는 용액의 low점이 더크면 while문 빠져나오기
					break;
				}
				i++; 
			}
			i--;
			
			
		}
		System.out.println(ref);
		
		
	}
	
}

'swea' 카테고리의 다른 글

파핑파핑지뢰찾기  (0) 2021.10.02
3307. 최장증가부분수열 (LIS)  (0) 2021.09.16
계산기2-1223번(Java)  (0) 2021.08.22
4012.요리사  (0) 2021.08.22
6808번. 규영이와인영이의카드게임  (0) 2021.08.15