문제
N*N배열 안의 숫자는 해당 영역에 존재하는 파리의 개수를 의미한다
이때 M*M 크기의 파리채로 한 번에 내리쳐 최대한 많은 파리를 죽이고자 한다.
이때 죽는 파리의 개수를 구하여라.
위 예제에서 M=2일경우 최대로 많이 죽는 파리의 수는 49이다.
풀이
이문제 같은 경우는 제약 조건을 읽어보면 N은 5 이상 15 이하이다 그렇기에 난 for문을 4중으로 사용하여 풀어도 문제없다고 생가하여서 4번의 for문을 사용하여 풀었다.
첫 번째 for문은 x의 좌표의 값 두 번째 for문은 y좌표의 값 세 번째 for문은 x 좌표의 값에서 파리채의 영역에 대한 x 좌표의 값 네 번째 for문은 y좌표에 대해서 파리채의 영역에 대한 y좌표의 값이다.
그렇게 하여 파리채 내부의 값들을 더하여 비교하였다.
코드
test=int(input())
for t in range(test):
n,m=map(int,input().split()) ## 배열 크기 입력
array=[list(map(int,input().split())) for _ in range(n)] ## 배열 입력
answer=0
for x in range(n-m+1):
for y in range(n-m+1):
sum1=0
for xm in range(x,x+m):
for ym in range(y,y+m):
sum1+=array[xm][ym]
answer=max(answer,sum1)
print("#"+str(t+1)+" "+str(answer))
for문을 4번쓰기 싫어 한번은 while 문을 한번 사용하여 풀었는데 코드가 길어질 뿐 결국 시행 횟수는 for문을 4번 쓴 거 하고 같아서 for문은 4번 사용한 코드가 가장 간단한 것 같다.
반응형
'파이썬 문제풀이 > 구현' 카테고리의 다른 글
[삼성 sw 파이썬] 19185 육십갑자 (0) | 2024.09.05 |
---|---|
[삼성sw 파이썬] 15230 알파벳 공부 (0) | 2024.08.24 |
[배준 파이썬]2564 경비원 (1) | 2024.06.16 |
[삼성 sw 파이썬] 1940. 가랏! RC카! (1) | 2024.05.02 |
[삼성sw 파이썬] 1288 새로운 불면증 치료법 (0) | 2024.04.27 |