[SWEA]2001ハエ退治
質問元:[SWEA]2001ハエ退治
質問する
Nは5以上15以下である.
Mは2以上N以下です.
各領域のハエ数は30以下である.
第1行目は、試験例の個数Tを与え、以下は各試験例である.
各テストケースの最初の行にはNとMがあります.
次のN行には、N x N配列が与えられる.
試験例tの結果は「#t」であり、スペースであり、正解を印刷する.
(tはテストケースの番号を表し、1から始まる.)
ハエのたたきの範囲を設定するのと範囲全体を設定するのは少し混同されています.最初はインデックスエラーが発生しました.全範囲をN-M+1として指定して解き,エラーを解決した.
ハエたたき領域の周りで和を求め,最大値変数に格納された値と比較して最大値を求める.
質問する
nxn配列の数字は、この領域に存在するハエの数を表す.
MxMサイズのハエを撮ってできるだけ多くのハエを殺したい.
ハエの数を求めろ!
せいげんじょうけん
Nは5以上15以下である.
Mは2以上N以下です.
各領域のハエ数は30以下である.
入力
第1行目は、試験例の個数Tを与え、以下は各試験例である.
各テストケースの最初の行にはNとMがあります.
次のN行には、N x N配列が与えられる.
しゅつりょく
試験例tの結果は「#t」であり、スペースであり、正解を印刷する.
(tはテストケースの番号を表し、1から始まる.)
コード#コード#
T = int(input())
for tc in range(1, T + 1):
# N : 총 영역 크기, M : 파리채의 크기
N, M = map(int, input().split())
num_list = [list(map(int, input().split())) for _ in range(N)]
max_val = 0 # 최댓값을 저장할 변수
# 인덱스를 벗어나지 않도록 범위 지정
for i in range(N - M + 1):
for j in range(N - M + 1):
sum_val = 0 # 파리채 영역 내부의 합을 구할 변수
# 파리채 크기 만큼 반복하면서 더해줌
for k in range(M):
for q in range(M):
sum_val += num_list[k + i][q + j]
# 최댓값 보다 파리채 영역이 더 크면 최댓값 변수에 저장
if max_val < sum_val:
max_val = sum_val
print(f'#{tc} {max_val}')
解答方法
ハエのたたきの範囲を設定するのと範囲全体を設定するのは少し混同されています.最初はインデックスエラーが発生しました.全範囲をN-M+1として指定して解き,エラーを解決した.
ハエたたき領域の周りで和を求め,最大値変数に格納された値と比較して最大値を求める.
Reference
この問題について([SWEA]2001ハエ退治), 我々は、より多くの情報をここで見つけました https://velog.io/@yujin19/SWEA-2001-파리퇴치テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol