[알고리즘] 백준 2563 - 색종이

홍예주·2022년 2월 8일
0

알고리즘

목록 보기
41/92

1. 문제

2. 입력

3. 풀이

1. 우선순위 큐 사용 -> 실패

우선순위 큐에 x 좌표가 작은 순서대로 삽입해 다음 색종이와 겹치는지 여부를 확인 후 겹치는 너비 계산.
-> 3장 이상 겹치는 경우를 생각 못했음

2. 배열 사용

100 * 100 배열에 색종이가 있는 부분을 모두 표시한 후,
색종이가 있는 부분의 개수를 모두 더하면 정답이 된다.

4. 코드

public class colorpapaer_2563{
    public static void solution() throws IOException{
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int total = Integer.parseInt(bf.readLine());

        int map[][] = new int[100][100];
        int answer=0;

        for(int i=0;i<total;i++){
            st = new StringTokenizer(bf.readLine());
            int x = Integer.parseInt(st.nextToken());
            int y = Integer.parseInt(st.nextToken());

            //종이 있는 부분 표시
            for(int j=0;j<10;j++){
                for(int k=0;k<10;k++){
                    map[x+j][y+k] = 1;
                }
            }
        }

        for(int i=0;i<100;i++){
            for(int j=0;j<100;j++){
                if(map[i][j]==1){
                    answer++;
                }
            }
        }

        System.out.println(answer);


    }
}

profile
기록용.

0개의 댓글