Tiny Bunny
본문 바로가기
Algorithm/Python

[SWEA #11010] 배열2 - 대각 최대값

by nowag 2024. 2. 29.

문제

N x N 배열에서 한 칸을 선택했을 때 그 칸을 기준으로 대각으로 네 방향에 포함된 값들의 총합이 최대가 되는 경우를 찾고 싶다.
아래 왼쪽 그림은 N = 5인 경우의 입력 예이다. 이 때 (3행, 2열) 을 선택하면 대각으로 네방향의 총합이 17 로 최대가 된다.

입력조건
첫 줄에 테스트케이스 수가 주어진다.
다음으로 배열의 크기 N(1<= N <= 30)이 주어진다.
다음 N개의 줄에 공백으로 구분된 N개의 정수 값이 주어진다.

출력조건
〈#〉과 케이스 번호를 출력하고 최대가 되는 값을 출력한다.

 

내가 쓴 코드

# 우하 좌하 좌상 우상
dj = [1, -1, -1, 1] # 행
di = [1, 1, -1, -1] # 열

T = int(input())
for t in range(T):
    N = int(input())
    arr = [list(map(int,input().split())) for _ in range(N)]
    MAX = 0
    for r in range(N):
        for c in range(N):
            sum_four = arr[r][c]
            for k in range(4):
                for l in range(1, N):
                    nj = r + dj[k] * l
                    ni = c + di[k] * l
                    if not(0 <= nj < N and 0 <= ni < N):
                        break
                    sum_four += arr[nj][ni]
            if sum_four > MAX:
                MAX = sum_four
    print(f'#{t+1} {MAX}')

나야~ ^^

 

출력 결과

#1 11
#2 13
#3 17

728x90
반응형

'Algorithm > Python' 카테고리의 다른 글

[SWEA #20397] 돌 뒤집기 2  (0) 2024.02.29
[SWEA #20396] 돌 뒤집기 게임 1  (2) 2024.02.29
[SWEA #11013] 배열1 - 3분할  (2) 2024.02.29
[SWEA #11315] 오목 판정  (3) 2024.02.29
[SWEA #4408] 자기 방으로 돌아가기  (0) 2024.02.29