[경시대회] 왜 아픈 상처에 소금을 뿌리십니까?

2024. 5. 8. 14:41·알고리즘

 

소스 코드

#include <stdio.h>
#pragma warning(disable:4996)
int main() {

    int n;
    scanf("%d", &n);
    int knee[50][50];

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            scanf("%d", &knee[i][j]);
        }
    }

    int minRow = n; // 무릎 상태에서 상처가 있는 가장 위의 행
    int maxRow = -1; // 무릎 상태에서 상처가 있는 가장 아래의 행
    int minCol = n; // 무릎 상태에서 상처가 있는 가장 왼쪽 열
    int maxCol = -1; // 무릎 상태에서 상처가 있는 가장 오른쪽 열

    // 상처가 있는 가장 위, 아래, 왼쪽, 오른쪽 위치를 찾음
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (knee[i][j] == 1) { // 상처를 찾을 때 마다 행,열 상태 업데이트
                minRow = (i < minRow) ? i : minRow;
                maxRow = (i > maxRow) ? i : maxRow;
                minCol = (j < minCol) ? j : minCol;
                maxCol = (j > maxCol) ? j : maxCol;
            }
        }
    }

    //상처를 모두 포함하는 직사각형의 넓이를 계산
    int width = maxCol - minCol + 1; // 가장 오른쪽 열 - 가장 왼쪽 열 + 1
    int height = maxRow - minRow + 1; // 가장 위의 행 - 가장 아래 행 + 1
    int area = width * height;

    printf("%d\n", area);

    return 0;
}

 

알고리즘

2차원 배열에서 상처의 경계를 찾고, 상처를 포함하는 직사각형의 넓이를 계산

 

예를 들어

0 0 1 0 0
0 0 1 0 0
0 0 1 0 0
의 배열이 존재한다고 하면,

가장 위의 상처는 행 0, 가장 아래의 상처는 행 2, 가장 왼쪽의 상처는 열 2, 가장 오른쪽의 상처도 열 2이다.

이 경우, 넓이는 1 * 3 = 3으로 계산 되므로 반창고를 붙일 넓이가 계산된다.

 

'알고리즘' 카테고리의 다른 글

[경시대회] 소믈리에 구름이  (0) 2024.05.08
[백준] 1300번 - K번째 수 (C언어) [Gold2]  (0) 2023.06.06
[백준] 11053번 - 가장 긴 증가하는 부분 수열 (C언어) [Silver2]  (0) 2023.06.02
[백준] 1517번 - 버블 소트 (C언어) [Platinum5]  (0) 2023.06.01
[백준] 2042번 - 구간 합 구하기 (C언어) [Gold1]  (0) 2023.05.31
'알고리즘' 카테고리의 다른 글
  • [경시대회] 소믈리에 구름이
  • [백준] 1300번 - K번째 수 (C언어) [Gold2]
  • [백준] 11053번 - 가장 긴 증가하는 부분 수열 (C언어) [Silver2]
  • [백준] 1517번 - 버블 소트 (C언어) [Platinum5]
min._.uuk_
min._.uuk_
하루 하나 기록하기
  • min._.uuk_
    기록하는 습관
    min._.uuk_
  • 전체
    오늘
    어제
    • 분류 전체보기 (33)
      • 알고리즘 (15)
      • 자바 스크립트 (2)
      • 인실리코젠 (15)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    인실리코젠 #크롤링 #SpringBoot #MVC #jQuery
    백준 #동적계획법 #dp #백트래킹 #dfs
    백준 #후위표기식 #스택 #중위표기식 #우선순위 #1918번
    #BOJ #백준 #10989번 #C언어 #카운팅정렬 #정렬
    백준 #BOJ #스택 #수열
    백준 #세그먼트 트리 #구간합 #c언어 #골드1 #탐색
    Apache #POI #JAVA #maven
    JS #테트리스 #HTML #CSS #추억의 게임
    백준 #1407번 #재귀함수
    백준 #MST #최소비용신장트리 #크루스칼 #그리디 #알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
min._.uuk_
[경시대회] 왜 아픈 상처에 소금을 뿌리십니까?
상단으로

티스토리툴바