본문 바로가기

IM대비

백준 2669 <직사각형 네개의 합집합의 면적 구하기>

728x90

skygood95.tistory.com/42

 

백준 2563 <색종이>

색종이의 수가 100이하이고 흰색도화지 크기가 100이기때문에 완전탐색으로도 가능한 문제이다. 그렇지 않다면 인덱스 트리를 이용해서 풀어야하는 문제이다. 이 문제의 시간 복잡도를 계산한다

skygood95.tistory.com

이 색종이 문제랑 비슷한 유형으로 범위가 짧기 때문에 boolean형 map 이차원 배열을 이용해 체크해주고 후에 계산하는 문제

 

다만 주의해야 할점은 시작점 x , y 종료점 x, y 점을 입력받으면 1씩 감소시켜 시작점 x부터 종료점 x-1까지, 시작점 y부터 종료점 y-1까지 체크를 해주는게 포인트이다.

 

이러한 문제는 마찬가지로 범위를 계산해 시간초과가 되지 않는지 확인하는 게 중요하다.

 

문제 풀이

  1. 시작점 x부터 종료점 x-1까지, 시작점 y부터 종료점 y-1까지 체크
  2. 좌표가 1부터 100이니 visit처리 된부분 더하기

 

전체 코드

더보기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main{

	static boolean map[][];
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		map=new boolean[101][101];
		for(int i=0;i<4;i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			int sx=Integer.parseInt(st.nextToken());
			int sy=Integer.parseInt(st.nextToken());
			int fx=Integer.parseInt(st.nextToken());
			int fy=Integer.parseInt(st.nextToken());
			for(int j=sx;j<fx;j++) {
				for(int k=sy;k<fy;k++) {
					map[j][k]=true;
				}
			}
		}
		int sum=0;
		for(int i=1;i<=100;i++) {
			for(int j=1;j<=100;j++) {
				if(map[i][j])
					sum++;
			}
		}
		System.out.println(sum);
	}
}

'IM대비' 카테고리의 다른 글

백준 1244 <스위치 켜고 끄기>  (0) 2020.09.21
백준 2635 <수 이어가기>  (0) 2020.09.20
백준 10157 <자리배정>  (0) 2020.09.20
백준 2564 <경비원>  (0) 2020.09.20
백준 2477 <참외밭>  (0) 2020.09.19