250x250
syk531
하루
syk531
전체 방문자
오늘
어제
  • 분류 전체보기 (166)
    • 개발 (166)
      • java (11)
      • kotlin (7)
      • spring, spring boot (35)
      • Javascript (4)
      • Tyhmeleaf (2)
      • Kafka (17)
      • Docker (8)
      • Kubernetes (3)
      • Elastic Stack (4)
      • react native (3)
      • Web (4)
      • GIS (3)
      • 리눅스 (16)
      • Windows (2)
      • 네트워크 (2)
      • 안드로이드앱 (5)
      • git (2)
      • Tool (15)
      • 프로젝트 (7)
      • 백준알고리즘 (14)
      • DB (2)

인기 글

최근 글

블로그 메뉴

    공지사항

    태그

    • 뉴스앱
    • 오블완
    • 티스토리챌린지

    최근 댓글

    티스토리

    hELLO · Designed By 정상우.
    syk531

    하루

    2563번_색종이_java
    개발/백준알고리즘

    2563번_색종이_java

    2022. 12. 11. 23:55
    728x90
    반응형

    1.문제

    2.접근방식

    처음에는 각 사각형의 영역의 넓이를 더하고 사각형마다 겹치는 영역을 빼는 방식으로 생각을 하였다.

    문제의 예시의 경우 각 사각형의 넓이는 100이므로 100 + 100 + 100 - (13-5) * (12-7) = 300 - 8 * 5 = 260 이 된다.

    그런데 해당 방법의 경우 사각형들이 겹치는 영역을 구하기 위해서는 사각형이 100개일 경우 1번 사각형이 2~100번 사각형과 겹치는 부분을 확인해야 하고 2번 사각형이 3~100번 사각형과 겹치는 부분을 확인해야 하는 것처럼 계산을 너무 많이 해야 할것 같았다.

    그래서 다른 방법을 생각했는데 흰색 도화지 영역을 넓이 1의 1칸짜리의 2차원 배열로 만들어서 입력된 사각형들로 색칠이 되는 영역을 배열에서 체크를 한 후 체크된 영역을 카운트 하는 방식으로 진행했다.

    3.코드

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    
    public class Main {
    	public static void main(String args[]) {
    		try {
    			BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    			BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
    			
    			boolean[][] square = new boolean[101][101];
    			int n = Integer.parseInt(reader.readLine());
    			
    			for(int i=0; i<n; i++) {
    				String[] strArr = reader.readLine().split(" ");
    				int a = Integer.parseInt(strArr[0]);
    				int b = Integer.parseInt(strArr[1]);
    				
    				for(int j=a+1; j<=a+10; j++) {
    					for(int k=b+1; k<=b+10; k++) {
    						square[j][k] = true;
    					}
    				}
    			}
    			
    			int cnt = 0;
    			for(int i=0; i<=100; i++) {
    				for(int j=0; j<=100; j++) {
    					if(square[i][j]) {
    						cnt++;
    					}
    				}
    			}
    			
    			writer.append(String.valueOf(cnt));
    			writer.flush();
    			writer.close();
    		} catch (Exception e) {
    			
    		}
    	}
    }
    728x90
    반응형
    저작자표시 (새창열림)

    '개발 > 백준알고리즘' 카테고리의 다른 글

    23972번_악마의 제안_java  (0) 2023.08.06
    15726번_이칙연산_java  (0) 2023.08.06
    5597번_과제 안 내신 분..?_java  (0) 2022.12.08
    1912번_연속합_java  (0) 2022.12.08
    25305번_커트라인_java  (0) 2022.12.08
      '개발/백준알고리즘' 카테고리의 다른 글
      • 23972번_악마의 제안_java
      • 15726번_이칙연산_java
      • 5597번_과제 안 내신 분..?_java
      • 1912번_연속합_java
      syk531
      syk531
      기억을 위해 기록을.

      티스토리툴바