티스토리 뷰

백준/java

[백준 2563 / JAVA] 색종이

3284921 2024. 11. 15. 00:29

[단계별로 풀어보기] 백준 2563 색종이

 

문제: 가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 프로그램을 작성하시오.

 

해설:

이 코드는 다음과 같은 순서로 구현했다.

 

1. 100*100의 도화지 배열을 생성한다.

2. 색종이 개수만큼 for 문을 반복한다. 100*100의 도화지 위에서 각 색종이가 차지하는 부분만큼 1을 삽입한다.

3. 모든 색종이 부분에 1 삽입이 끝났으면 다시 도화지의 (0, 0)부터 (99, 99)까지 하나씩 방문하며 1인지 아닌지 확인한다. 1이면 넓이 변수를 1 올린다. 

4. 계산된 넓이 변수를 출력한다.

 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int arr[][] = new int [100][100]; // 도화지 배열

        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();

        for (int i = 0; i < n; i++){ // 도화지 배열에 색종이 삽입

            int row = sc.nextInt();
            int col = sc.nextInt();

            for (int w = row; w < row + 10; w++){ // 색종이의 너비. 3에서 시작하는 종이라면 3부터 13까지 돌아감 (너비가 10)
                for (int h = col; h < col + 10; h++){ // 색종이의 길이. 5에서 시작하는 종이라면 5부터 15까지 돌아감 (길이도 10)
                    arr[w][h] = 1;
                }

            }
        }

        int area = 0;
        for (int i = 0; i < 100; i++){
            for (int j = 0; j < 100; j++){
                if (arr[i][j] == 1){
                    area++;
                }
            }
        }

        System.out.println(area);
    }
}

'백준 > java' 카테고리의 다른 글

[SWEA 1859 / JAVA] 백만 장자 프로젝트  (0) 2024.11.19
[백준 2566 / JAVA] 최댓값  (0) 2024.11.14
[백준 2738 / JAVA] 행렬 덧셈  (0) 2024.11.14
[백준 9086 / JAVA] 문자열  (1) 2024.11.14
[백준 2743 / JAVA] 단어 길이 재기  (0) 2024.11.14
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함