http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1101&sca=3050
- 풀이
화학물질의 최저 보관 온도 순으로 정렬한 뒤, 가장 최저온도가 낮은 화학물질의 최고 보관 온도로 냉장고의 온도 범위를 지정한다.
새로 들어온 물질의 최고 보관 온도가 현재 지정된 최고 보관 온도보다 낮다면 그 온도로 갱신한다.
또한 냉장고의 최고 보관 온도보다 최저 보관 온도가 높은 물질이 나타나면 새로운 냉장고를 사용한다.
이렇게 모든 화학 물질을 탐색하고, 사용된 냉장고의 수를 세서 출력한다.
- 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static int N;
static int [][] C ;
static int cnt;
static void find() {
int tempMax = C[0][1]; // 첫번째 냉장고의 가능한 최고 온도
cnt++;
for (int i=1; i<N; i++) {
if (tempMax < C[i][0]) { // 냉장고 최고 온도보다 물질의 최저 저장 온도가 높다면
cnt++; // 새로운 냉장고 사용
tempMax = C[i][1];
}
else {
tempMax = tempMax<C[i][1]?tempMax:C[i][1]; // 냉장고의 가능한 최고 온도 갱신
}
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
// 입력 및 초기화
N = Integer.parseInt(st.nextToken());
C = new int [N][2];
for (int i=0; i<N; i++){
st = new StringTokenizer(bf.readLine());
C[i][0] = Integer.parseInt(st.nextToken());
C[i][1] = Integer.parseInt(st.nextToken());
}
// 최저 보관 온도순 정렬
Arrays.sort(C, (o1, o2)->{
if (o1[0]==o2[0]) return o1[1]-o2[1];
else return o1[0] - o2[0];
});
// 냉장고 대수 찾기
find();
// 출력
System.out.println(cnt);
}
}
'개발 > 코딩테스트' 카테고리의 다른 글
백준 2638번: 치즈 [JAVA] (0) | 2023.03.27 |
---|---|
백준 9663번: N-Queen [JAVA] (0) | 2023.03.27 |
백준 1260번: DFS와 BFS [JAVA] (0) | 2023.03.18 |
백준 2178번: 미로 탐색 [JAVA] (0) | 2023.03.18 |
백준 1991번: 트리순회 [JAVA] (0) | 2023.03.18 |
댓글