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

+ Recent posts