while 문 풀이
https://gkim1011.tistory.com/m/45
while문 풀이에서는 막히는 부분 없으면 j에 1을 더했다면,
for문 풀이에서는 1부터 M까지 for문을 돌면서
막히는 부분(벽과 만나는 부분)이 있으면 continue를 했다.
def kill1(y, x):
global total1
dy = [-1, 1, 0, 0]
dx = [0, 0, -1, 1]
total1 += arr[y][x]
for j in range(1, M):
for i in range(4):
ny = y+dy[i]*j
nx = x+dx[i]*j
if nx<0 or ny<0 or nx>N-1 or ny>N-1:
continue
total1 += arr[ny][nx]
def kill2(y, x):
global total2
dy = [-1, 1, -1, 1]
dx = [-1, -1, 1, 1]
total2 += arr[y][x]
for j in range(1, M):
for i in range(4):
ny = y+dy[i]*j
nx = x+dx[i]*j
if nx<0 or ny<0 or nx>N-1 or ny>N-1:
continue
total2 += arr[ny][nx]
T = int(input())
for tc in range(1, 1+T):
N, M = map(int, input().split())
arr = [list(map(int, input().split())) for _ in range(N)]
MAX = -21e8
for i in range(N):
for j in range(N):
total1 = 0
total2 = 0
kill1(i, j)
if total1>MAX:
MAX = total1
kill2(i, j)
if total2>MAX:
MAX = total2
print(f'#{tc} {MAX}')
'파이썬 알고리즘' 카테고리의 다른 글
[파이썬] 백준 1316 그룹 단어 체커 (1) | 2022.10.19 |
---|---|
[파이썬] 백준 10944 별 찍기 -19 (0) | 2022.10.19 |
[파이썬] SWEA 12712 파리퇴치3 (while 문으로 풀기) (0) | 2022.10.18 |
[파이썬] SWEA 2001 파리 퇴치 (0) | 2022.10.18 |
[파이썬] SWEA 5789 현주의 상자 바꾸기 (0) | 2022.10.12 |