728x90
[백준(Baekjoon)] 2563.색종이
2563번: 색종이
가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록
www.acmicpc.net
[입력]
첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 두 번째 자연수는 색종이의 아래쪽 변과 도화지의 아래쪽 변 사이의 거리이다. 색종이의 수는 100 이하이며, 색종이가 도화지 밖으로 나가는 경우는 없다
[출력]
첫째 줄에 색종이가 붙은 검은 영역의 넓이를 출력한다.
[풀이]
사각형에 해당하는 배열 칸을 1로 설정했다.
사각형이 겹쳐도 어차피 1이어서 두번 세는 일이 없도록 했다.
그리고 사각형의 한칸 넓이가 1이기 때문에 1~10에 해당한다.
따라서 사각형의 x좌표와 y좌표는 0~9까지 더해야한다.
마지막으로 도화지에 있는 모든 1을 더해준다.
public class algo2563 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); //사각형의 갯수
int[][] white = new int[101][101];
int totalSize = 0; //총 넓이
for (int i = 0; i < N; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 10; k++) {
white[x+j][y+k] = 1; //사각형에 해당하는 배열을 1로 만들기
}
}
}
for (int i = 0; i < 101; i++) {
for (int j = 0; j < 101; j++) {
if(white[i][j] == 1) { //1이 있는 곳만 총 넓이에 더한다
totalSize++;
}
}
}
System.out.println(totalSize);
}
}
메모리 | 시간 | 언어 | 코드 길이 |
17868 | 240 | Java 11 | 589 |
'programming > 알고리즘 풀이' 카테고리의 다른 글
[백준(Baekjoon)] 2961. 도영이가 만든 맛있는 음식 (0) | 2021.08.13 |
---|---|
[백준(Baekjoon)] 3040. 백설 공주와 일곱 난쟁이 (0) | 2021.08.13 |
[백준(Baekjoon)] 2493. 탑 (0) | 2021.08.10 |
[SWEA] 3499. 퍼펙트 셔플 (0) | 2021.08.06 |
[SWEA] 1873. 상호의 배틀필드 (0) | 2021.08.05 |
댓글