1 분 소요

격자판 최대합

문제 정리

입력

5
10 13 10 12 15
12 39 30 23 11
11 25 50 53 15
19 27 29 37 27
19 13 30 13 19

처리 과정

  1. 하나의 for문 안에서 행과 열의 최대합을 한번에 구하기
  2. 또다른 for문 안에서 두 대각선의 최대합을 한번에 구하기
  3. 최댓값 구하기

출력

155

내 답

import sys
sys.stdin = open("./input/in6-1.txt", "rt")

n=int(input())
board=[[0]*n for _ in range(n)] 

for i in range(n):
    board[i]=list(map(int, input().split()))

max=0
sum=0

# 각 행의 합
for i in range(n):
    for j in range(n):
        sum+=board[i][j]
    if sum>max:
        max=sum
    sum=0

# 각 열의 합
for i in range(n):
    for j in range(n):
        sum+=board[j][i]
    if sum>max:
        max=sum
    sum=0

# 대각선(\)의 합
for i in range(n):
    sum+=board[i][i]
if sum>max:
    max=sum
sum=0

# 대각선(/)의 합
for i in range(n):
    sum+=board[n-i-1][i]
if sum>max:
    max=sum
sum=0

print(max)

풀이

import sys
sys.stdin = open("./input/in6-1.txt", "rt")

n=int(input())

# 2차원 리스트로 입력 받기
lst=[list(map(int, input().split())) for _ in range(n)]
largest=-2147000000

# 행과 열의 최대합
for i in range(n):
    sum1=sum2=0 # 각각 행의합, 열의합
    for j in range(n):
        sum1+=lst[i][j]
        sum2+=lst[j][i]
    if sum1>largest:
        largest=sum1
    if sum2>largest:
        largest=sum2
    
# 대각선의 최대합
sum1=sum2=0
for i in range(n):
    sum1+=lst[i][i]
    sum2+=lst[n-i-1][i]
if sum1>largest:
        largest=sum1
if sum2>largest:
    largest=sum2

print(largest)

정리

  • n행 n열의 2차원 리스트 입력받기: lst=[list(map(int, input().split())) for _ in range(n)]
  • 행과열, 두 대각선의 합을 한번에 (총 두번에) 구할 수 있다


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기

태그:

카테고리:

업데이트: