문제 url:
색종이
문제:
1. BufferedReader를 이용해 입력을 받는다.
2. 100 * 100 크기의 배열을 생성
3. 색종이 개수(n)개를 입력받기
4. 색종이 넓이를 계산할 변수 count 정의
5. 색종이 개수만큼 반복하는 반복문 생성
6. 색종이와 도화지간의 간격 row, col을 입력받은 후 해당 값을 변수에 저장
7. row와 col부터 10의 크기만큼 도화지(100*100)배열에 값을 주입
8. 해당 값을 계산하는데, 단! 겹치는 부분(이미 존재하는 값)이 있다면 해당 부분은 예외처리를 해준다.
9. 크기를 출력
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//색종이 수 입력
int n = Integer.parseInt(br.readLine());
// 100 * 100 도화지 크기 배열
int[][]paper = new int[100][100];
// 검은색 영역의 넓이를 더할 count 변수 정의
int count = 0;
for (int k = 0; k < n; k ++) {
// 공백으로 구분된 입력값을 처음에는 row, 후는 col이라는 변수로 정의
StringTokenizer st = new StringTokenizer(br.readLine());
int row = Integer.parseInt(st.nextToken());
int col = Integer.parseInt(st.nextToken());
// 도화지에 색종이를 넣기 위한 for문 10은 색종이 크기가 10 * 10이니깐
for(int i = row; i < 10+row; i++) {
for (int j = col; j < 10 + col; j++) {
// 겹치는 영역은 제외하기 위한 의문문(이미 존재하는데 수를 세는 것을 방지하기 위해)
if (paper[i][j] != 1) {
paper[i][j] = 1;
count++;
}
}
}
}
br.close();
System.out.println(count);
}
}
특별히 어렵지는 않았던 문제였다. 그 후, 다른 사람들의 풀이를 보니 부르트포스 알고리즘이라는 단어를 사용하는 것을 보게되었는데, 이 부분에 대해서 이제 공부하면서 어떤 것인지 알아보도록 하자