728x90
반응형
문제: https://www.acmicpc.net/problem/2563
문제 접근
처음에는 모든 삼각형의 넓이를 구한 후, 겹치는 부분을 빼주는 식으로 생각했습니다!
근데 코드가 너무 복잡해지고, 머리가 안 돌아가길래 다른 방법을 생각해봤습니다.
제가 생각한 방식은 다음과 같습니다:
- 2차원 배열을 좌표 평면, 입력값을 색종이의 (x,y) 좌표로 생각
- 2차원 배열을 생성하여 0으로 초기화
- 색종이가 없는 부분은 0, 색종이가 있는 부분(좌표)은 1로 생각 ( 1의 개수를 구할 예정 )
- 만약 배열의 값이 0이면 sum++; 하고 값을 1로 변경 (10 X 10 반복)
전체 코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int[][] arr = new int[100][100];
int sum = 0;
int n = Integer.parseInt(br.readLine()); // 몇 개의 색종이?
for(int i = 0; i < n; i++) {
String input = br.readLine();
int x = Integer.parseInt(input.split(" ")[0]);
int y = Integer.parseInt(input.split(" ")[1]);
for(int j = y; j < y + 10; j++) {
for(int k = x; k < x + 10; k++) {
if(arr[k][j] == 0) {
sum++;
arr[k][j] = 1;
}
}
}
}
bw.write(sum + "\n");
bw.flush();
}
}
의문점?
일단 배열의 크기를 100X100으로 설정했는데.. 사실 적당히 큰 숫자를 넣은 것이거든요 ㅎㅋ..
만약 시작점의 좌표가 91 이상이 되어버리면 오류가 날 거 같은데.. 그래도 통과가 뜨더라구요
혹시라도 100X100으로도 통과한 이유를 아신다면 댓글로 남겨주세요..!!
부족하지만 읽어주셔서 감사합니다!
728x90
반응형
'Java > 코딩테스트' 카테고리의 다른 글
[백준] 2903번: 중앙 이동 알고리즘 (JAVA) (0) | 2025.04.03 |
---|---|
[백준] 2720번: 세탁소 사장 동혁 (JAVA) (0) | 2025.04.03 |
[백준] 11005번: 진법 변환2 (JAVA) (0) | 2025.04.02 |
[백준] 2745번: 진법 변환 (JAVA) (0) | 2025.04.02 |
[백준] 10798번: 세로읽기 (JAVA) (0) | 2025.04.02 |