문제 링크
주의사항
- JAVA를 사용하여 프로그램을 사용하였습니다.
- 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{
public static void main(String[] args){
}
}
문제 설명
접근 방법
이 문제에 핵심은
1. 흰색 도화지의 크기는 100 × 100의 가지고 있습니다.
2. 10 × 10 크기의 정사각형 모양의 색종이를 붙입니다.
3. 모든 색종이를 붙인 뒤, 색종이로 붙인 영역의 넓이를 결과로 출력합니다.
알고리즘 진행 순서.
1. 입력된 정보를 저장합니다.
2. 색종이를 붙이는 과정을 진행합니다.
3. 색종이를 모두 붙였을 때 영역의 넓이를 결과로 출력합니다.
색종이 붙이기
색종이의 붙일 때 영역을 boolean[][]에 저장합니다.
boolean[i][j] = true : 해당 위치는 색종이로 덮어져있다.
boolean[i][j] = false : 해당 위치는 색종이로 뒤덮여있지 않습니다.
영역의 넓이
영역의 넓이 : boolean[1~100][1~100] = true인 개수
예제입력1.
1. 입력된 정보를 저장합니다.
색종이의 개수 : 3
색종이의 기준 좌표
색종이 1 | 색종이 2 | 색종이 3 | |
X좌표 | 3 | 15 | 5 |
Y좌표 | 7 | 7 | 2 |
2. 색종이를 붙이는 과정을 진행합니다.
색종이를 붙이기
색종이를 붙인 영역은 문제에서 표현된 그림으로 볼 수 있습니다.
3. 색종이를 모두 붙였을 때 영역의 넓이를 결과로 출력합니다.
배열에서 true인 개수 : 260개
260을 결과로 출력합니다.
- BufferedReader를 사용하여 입력 값을 저장하였습니다.
- StringTokenizer를 사용하여 색종이의 위치 띄어쓰기 기준 나누었습니다.
- 100 × 100 도화지에 색종이를 붙이는 과정을 진행합니다.
- 도화지에 boolean[][]의 true 개수(영역의 넓이)를 BufferedWriter 저장합니다.
- BufferedWriter에 저장된 결과값을 출력하였습니다.
결과 코드
import java.io.*;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException {
//입력값 처리하는 BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//결과값 출력하는 BufferedWriter
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
StringTokenizer st;
int answer = 0;
//도화지 영역 배열
boolean[][] check = new boolean[101][101];
//색종이 붙이기 진행
for(int i=0;i<N;i++){
st = new StringTokenizer(br.readLine(), " ");
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
//색종이 영역 boolean[][] = true 설정
for(int j=y;j<y+10;j++){
for(int s = x;s<x+10;s++)
check[j][s] = true;
}
}
//도화지 배열 true의 개수 구하기
for(int i=1;i<101;i++){
for(int j=1;j<101;j++)
if(check[i][j]) //true일 때
answer++;
}
bw.write(answer + ""); //영역의 넓이 BufferedWriter 저장
bw.flush(); //결과 출력
bw.close();
br.close();
}
}
'백준' 카테고리의 다른 글
[백준] 알고리즘 분류(그래프 이론,JAVA)1987번, 알파벳 (0) | 2022.12.20 |
---|---|
[백준] 알고리즘 분류(너비 우선 탐색,JAVA)2644번, 촌수계산 (0) | 2022.12.19 |
[백준] 알고리즘 분류(그리디 알고리즘,JAVA)2109번, 순회강연 (0) | 2022.12.17 |
[백준] 알고리즘 분류(브루트포스 알고리즘,JAVA)15684번, 사다리 조작 (0) | 2022.12.16 |
[백준] 알고리즘 분류(자료 구조,JAVA)10799번, 쇠막대기 (0) | 2022.12.15 |
댓글