50분
구현
100ms
- 최대 크기가 100이므로 100*100인 2차원 배열을 만들어 주었다.
- 평면이 곧 2차원 배열이고, 좌표값이 인덱스라고 생각
- 직사각형의 범위 내에 있는 인덱스에 색칠(1)하기
for (int j = 0; j < 100; j++) {
for (int k = 0; k < 100; k++) {
if (x1 <= j && j < x2 && y1 <= k && k < y2) {
arr[j][k] = 1;
}
}
}
- 1인 인덱스 수 세기
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
if (arr[i][j] == 1) {
count++;
}
}
}
- 로직을 떠올린 후 코드로 구현하는 것은 의외로 어렵지 않았다. 야호!
import java.io.*;
import java.util.Iterator;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
// StringTokenizer st = new StringTokenizer(bf.readLine());
int x1 = 0;
int y1 = 0;
int x2 = 0;
int y2 = 0;
int[][] arr = new int[100][100];
int count = 0; //방문하면 1로 처리
for (int i = 0; i < 4; i++) {
StringTokenizer st = new StringTokenizer(bf.readLine());
x1 = Integer.parseInt(st.nextToken());
y1 = Integer.parseInt(st.nextToken());
x2 = Integer.parseInt(st.nextToken());
y2 = Integer.parseInt(st.nextToken());
for (int j = 0; j < 100; j++) {
for (int k = 0; k < 100; k++) {
if(x1<= j && j <x2 && y1<=k && k<y2) {
arr[j][k] = 1;
}
}
}
}
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
if (arr[i][j] ==1) {
count++;
}
}
}
System.out.println(count);
}
}