SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
1. 문제 설명
N x N 배열 안의 숫자는 해당 영역에 존재하는 파리의 개수를 의미한다.
아래는 N=5 의 예이다.

M x M 크기의 파리채를 한 번 내리쳐 최대한 많은 파리를 죽이고자 한다.
죽은 파리의 개수를 구하라!
예를 들어 M=2 일 경우 위 예제의 정답은 49마리가 된다.

[제약 사항]
1. N 은 5 이상 15 이하이다.
2. M은 2 이상 N 이하이다.
3. 각 영역의 파리 갯수는 30 이하 이다.
[입력]
가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.
각 테스트 케이스의 첫 번째 줄에 N 과 M 이 주어지고,
다음 N 줄에 걸쳐 N x N 배열이 주어진다.
[출력]
출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.
(t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.)
2. 코드
간단한 문제였습니다. 배열안에 작은 배열을 만들며 그 안에 합을 비교하며 결과에 저장하였습니다.
아래가 작성한 코드입니다.
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
T = int(input())
for tc in range(1, T+1):
N, M = map(int, input().split())
fly = [list(map(int, input().split())) for _ in range(N)]
result = 0
# 배열을 순회
for j in range(N-M+1):
for i in range(N-M+1):
total = 0
# M x M의 크기에 있는 파리 수 검사
for y in range(j, j+M):
for x in range(i, i+M):
total += fly[y][x]
# 현재 결과보다 큰 경우 저장
if total > result:
result = total
print('#{} {}'.format(tc, result))
|
'python' 카테고리의 다른 글
| 스타트와 링크 Python (BEAKJOON) (0) | 2020.03.29 |
|---|---|
| [파이썬 S/W 문제해결 기본] 5일차 - Forth Python (SW Expert Academy) (0) | 2020.03.28 |
| 미로 탐색 Python (BEAKJOON) (0) | 2020.03.26 |
| 치킨 배달 Python (BEAKJOON) (0) | 2020.03.25 |
| DFS와 BFS Python (BEAKJOON) (0) | 2020.03.24 |