[SW Expert Academy] 2001 . 파리퇴치 1

sun1·2023년 3월 3일
0

im_test

목록 보기
9/22
post-thumbnail

문제

SWEA 2001 . 파리퇴치 1
https://swexpertacademy.com/main/talk/solvingClub/problemView.do?solveclubId=AYWpDVe6hEgDFAVt&contestProbId=AV5PzOCKAigDFAUq&probBoxId=AYalI5fK84UDFAVx&type=PROBLEM&problemBoxTitle=230303_IM%EC%97%B0%EC%8A%B5+%28%EC%84%A0%ED%83%9D%29&problemBoxCnt=2

풀이

조건

  • N x N 배열에 파리의 개체수를 입력받는다.
  • M x M 크기의 파리채를 한 번 내리쳐 최대한 많은 파리를 죽이고자 한다.

풀이 순서

  • N, M 과 N x N 배열을 입력값으로 받는다.
  • 모든 점을 순회하면서 그 점을 중심으로 x, y방향으로 최대 M범위 만큼 영역의 합을 구한다.
  • 최대값을 임의로 설정 후 구한값이 최댓값보다 클 경우 갱신해준다.

코드

Python

T = int(input())
for tc in range(1, T + 1):
    N, M = map(int, input().split())
    arr = [list(map(int, input().split())) for _ in range(N)]
    mx = 0
    for i in range(0, N - M + 1):  #모든 범위를 확인하기 위해 범위 지정
        for j in range(0, N - M + 1):
            tmp = 0
            for k in range(M):  # i,j 에서 M*M 배열 값 다 더해주기
                for q in range(M):
                    tmp += arr[i + k][j + q]
            if tmp > mx:  #최댓값 갱신
                mx = tmp

    print(f'#{tc} {mx}')

0개의 댓글