백준 2567번: 색종이 - 2 (java)
2021. 8. 22. 03:37ㆍAlgorithm/백준
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
// 가로 세로 크기가 각각 10인 정사각형 모양의 검은색 색종이를 붙임. 둘레를 구해라.
public class Baekjoon_색종이2 {
static int N; // 몇 개의 색종이를 붙일건지
static int[][] map; // 크기 100 이차원 배열
static int R, C; // 행 열
static int[] dx = { 0, 0, -1, 1 }; // 상하좌우
static int[] dy = { -1, 1, 0, 0 }; // 상하좌우
static int cnt;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(in.readLine());
map = new int[102][102];
for (int t = 0; t < N; t++) {
StringTokenizer st = new StringTokenizer(in.readLine());
R = Integer.parseInt(st.nextToken());
C = Integer.parseInt(st.nextToken());
for (int i = C; i < C + 10; i++) { // 좌표로부터 길이가 10인 정사각형
for (int j = R; j < R + 10; j++) {
map[i][j] = 1; // 입력된 정사각형 내부 전부 1로 만듬
}
}
}
for (int i = 1; i < 102; i++) {
for (int j = 0; j < 102; j++) {
if (map[i][j] == 1) {
for (int d = 0; d < 4; d++) {
int nx = j + dx[d];
int ny = i + dy[d];
if(nx >=1 && nx <=100 && ny >= 1 && ny <=100 && map[ny][nx] == 0) {
cnt++;
}else if(nx < 1 || nx >=101 || ny < 1 || ny >= 101) {
cnt++;
}
}
}
}
}
System.out.println(cnt); // 둘레 출력
}
}
728x90
'Algorithm > 백준' 카테고리의 다른 글
백준 10163번 : 색종이 (java) (0) | 2021.08.25 |
---|---|
백준 11399번: ATM (java) (0) | 2021.08.24 |
백준 2798번: 블랙잭 (java) (0) | 2021.08.24 |
백준 1592번: 영식이와 친구들 (java) (0) | 2021.08.22 |
백준 2804번: 크로스워드 만들기 (java) (0) | 2021.08.22 |