https://www.acmicpc.net/problem/20207
20207번: 달력
수현이는 일년의 날짜가 1일부터 365일로 표시되어있는 달력을 가지고있다. 수현이는 너무나도 계획적인 사람이라 올 해 일정을 모두 계획해서 달력에 표시해놨다. 여름이 거의 끝나가자 장
www.acmicpc.net
그리드 구현 문제인데.. 뭔가 dp문제에 조금 더 가까운 문제 같네요... 어렵네요
import java.util.*;
import java.lang.*;
import java.lang.reflect.Array;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
Scanner scan=new Scanner(System.in);
//수현이는 일녀의 날짜가 1일 ~ 365일
//
//연소된 두일자에 각각 일정이 1개 이상있다면 이를 연속되었다고 표현하자
//연속된 모든 일정은 하나의 직사각형에 포함되어야한다
//연속된 모든 일정을 모두 감싸는 가장 작은 직사각형의 크기만큼 코팅지를 오린다.
//달라ㅕㄱ은 다음과 같은 규칙을 따른다ㅣ.
//일정은 시작날짜와 종료날짜를 포함한다
//시작일이 가장 앞선 일정부터 차례대로 채워진다
int n=scan.nextInt();
HashMap<Integer ,Integer>maps=new HashMap<>();
for(int i=1;i<=365;i++) {
maps.put(i,0);
}
for(int i=0;i<n;i++) {
int start=scan.nextInt();
int end=scan.nextInt();
for(int j=start;j<=end;j++) {
maps.put(j,maps.get(j)+1);
}
}
int h=0;
int w=0;
int mx=0;
for(Integer key:maps.keySet()) {
if(maps.get(key)>0) {
w++;
if(h<maps.get(key)) {
h=maps.get(key);
}
}else {
mx+=w*h;
w=0;
h=0;
}
}
mx+=w*h;
System.out.println(mx);
}
}
'알고리즘 공부' 카테고리의 다른 글
백준 주사위 굴리기 (1) | 2023.12.11 |
---|---|
백준 뱀 (0) | 2023.12.05 |
백준 신기한소수 (3) | 2023.11.24 |
백준 상어 초등학교 (2) | 2023.11.23 |
백준 가장 큰 정사각형 (0) | 2023.11.21 |