친구가 공부하던 커리큘럼을 따라가다 보니 골드 풀다가 브론즈 풀다가 왔다갔다 하는데 사실 골드 풀다가 브론즈로 내려왔더니 아 이렇게 간단하게 생각하면 또 시간초과 or 메모리제한에 걸리겠구나 라는 내 꾀에 내가 넘어가서 좀 어렵게 풀었다.
그러다가 너무 어려워서 그냥 일단 해보고 안되면 그때 바꾸자 생각해서 했더니 됐다.
그냥 100 x 100의 사이즈이므로 이중배열을 이용하여 정해진 좌표에서 가로로 +10 세로로 +10 만큼의 배열 위치를 1로 변경해주었다. 이렇게 하면 중복된 수도 겹치지 않게 계산할 수 있다.
마지막으로 1의 수를 계산해주면 된다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
int N=Integer.parseInt(st.nextToken());
int paper[][]=new int[101][101];
int x[]=new int[N];
int y[]=new int[N];
int answer=0;
for(int i=0;i<N;i++) {
st = new StringTokenizer(br.readLine());
x[i]=Integer.parseInt(st.nextToken());
y[i]=Integer.parseInt(st.nextToken());
}
for (int i = 0; i < N; i++) {
for (int j = x[i]; j < x[i]+10; j++) {
for (int k = y[i]; k < y[i]+10; k++) {
paper[j][k]=1;
}
}
}
for(int i=1;i<=100;i++) {
for(int j=1;j<=100;j++) {
answer+=paper[i][j];
}
}
System.out.println(answer);
}
}