문제
주어진 N X N 리스트에서 행, 렬, 두 개의 대각선의 합 중에 가장 큰 값을 출력하라
문제풀이
import sys
#sys.stdin = open("input.txt", "r")
#격자판 최대합
n = int(input())
a = [list(map(int,input().split())) for _ in range(n)]
sum1 = sum2 = sum3 = sum4 = 0
largest = -2147000000
# 행, 렬의 최대합
for i in range(n):
#0,0 ~ 0,n까지 확인이 끝나면 sum1, sum2 다시 초기화
sum1 = sum2 = 0
for j in range(n):
sum1 += a[i][j]
sum2 += a[j][i]
#매번 행 확인이 끝날 때 max값을 확인하기 위함
if largest < sum1:
largest = sum1
if largest < sum2:
largest = sum2
#대각선 확인을 위한 기초
sum1 = sum2 = 0
for i in range(n):
sum1 += a[i][i]
sum2 += a[i][n-i-1]
if largest < sum1:
largest = sum1
if largest < sum2:
largest = sum2
print(largest)
- 해당 sum 변수 초기화와 largest 비교 시점이 중요한 문제이다.
- 대각선의 경우 i씩 증가하거나 i, n-1-i만큼 증가하기에 이 부분을 찾으면 문제 풀이는 어렵지 않다.
'자료구조와 알고리즘 > 개인적인 코딩테스트 관련 풀이' 카테고리의 다른 글
[탐색][시뮬레이션] - 곶감(2차원 List) (0) | 2022.07.06 |
---|---|
[탐색][시뮬레이션] - 사과나무(2차원 List) (0) | 2022.07.06 |
[탐색][시뮬레이션] - 수들의 합(List) (0) | 2022.07.06 |
[탐색][시뮬레이션] - 카드 역배치(List) (0) | 2022.07.01 |
[탐색][시뮬레이션] - 숫자만 추출(String) (0) | 2022.07.01 |