1. 문제

www.acmicpc.net/problem/2563

 

2563번: 색종이

첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변��

www.acmicpc.net

2. 접근방법

아주 무난한 구현 문제

100x100 크기의 도화지에 주어진 10x10색종이를 모두 붙이고 총 붙어진 크기를 구하는 문제

백준에서 설명하는 그림은 위와 같은데

우리가 쓰는 배열의 0,0은 좌상위치고 설명그림의 0,0은 좌하 이지만 설명 그림을 거꾸로 뒤집어 돌려보면 크기는 어차피 똑같은 것을 알 수 있다.

 

그러니까 그냥 주어진 좌표 그대로 색종이를 붙여주면 된다.

 

3. 풀이

1. [101][101] 도화지 생성

2. 도화지에 주어진 좌표부터 10x10크기만큼 1로 바꿔주고 바꾼 횟수 카운트하기

3. 만약 이미 1이 되었다면 카운트 x

4. 모든 색종이를 붙이고 카운트 출력

 

4. 자바 코드

package Silver;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class P2563색종이 {
	
	public static void main(String[] args) throws Exception {
		int map[][] = new int [101][101];
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		int N = Integer.parseInt(br.readLine());
		int cnt = 0;
		for(int i = 0 ; i < N ; i++) {
			st = new StringTokenizer(br.readLine());
			int row = Integer.parseInt(st.nextToken());
			int col = Integer.parseInt(st.nextToken());
			for(int j = 0; j<10 ;j++) {
				for(int k = 0 ; k < 10 ;k++) {
					if(map[row+j][col+k] == 0) {
						cnt++;
						map[row+j][col+k] = 1;
					}
				}
			}
		}
		System.out.println(cnt);
	}

}

5. 마치며

아주 무난했다. ㅎ

 

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

[백준] 1244 스위치 켜고 끄기  (0) 2020.09.19
[백준] 2564 경비원  (1) 2020.09.19
[백준] 17135 캐슬디펜스  (0) 2020.09.13
[백준] 16174 점프왕쩰리(Large)  (0) 2020.09.04
[백준] 17472 다리만들기2  (0) 2020.09.04

+ Recent posts