[BOJ] Q10163: 색종이

ddwwon·2022년 11월 3일
0

Algorithm

목록 보기
4/4
post-thumbnail


내 코드

package BOJ;
import java.util.*;

public class Q10163 {
    public static void main(String args[]){
        int arr[][] = new int[1001][1001];
        Scanner sc = new Scanner(System.in);

        int T = sc.nextInt();
        int str[] = new int[4];
        int num[] = new int[T];
        int cnt = 0;

        for(int i = 0; i < T; i++){
            for(int j = 0; j < 4; j++) {
                str[j] = sc.nextInt();
            }
            for(int j = 1000-str[0]; j > 1000-str[2]; j--) {
                for(int k = str[1]; k < str[1] + str[3]-1; k++) {
                    if(i > 0){
                        if(arr[j][k] == 1) cnt++;
                    }
                    arr[j][k] = 1;
                }
            }
            num[i] = (str[2]*str[3]);
        }

        for(int i = 0; i < T; i++){
            System.out.println(num[i] - cnt);
        }
    }
}
  • 이 문제는 정말 풀기 힘들었다. 겹치는 부분의 넓이를 계산할 때, 각각의 넓이는 구해서 겹치는 부분을 빼서 넓이를 구해려고 생각해서 너무 힘들었다.
  • 다른 친구가 푼 아이디어를 듣고 문제를 풀 수 있었다.
  • 쉽게 생각하면 각 입력마다 특정 숫자를 입력하게 하고, 해당 숫자를 count 하면서 넓이를 재면 되는 일이었다!
  • 앞으로 문제를 최대한 직관적이게 풀 수 있도록 많이 연습해봐야겠다.

https://www.acmicpc.net/problem/10163

0개의 댓글