[Python | SWEA] 1209. [S/W 문제해결 기본] 2일차 - Sum
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제
다음 100X100의 2차원 배열이 주어질 때, 각 행의 합, 각 열의 합, 각 대각선의 합 중 최댓값을 구하는 프로그램을 작성하여라.
다음과 같은 5X5 배열에서 최댓값은 29이다.

제출 답안
for test_case in range(1, 11):
num = int(input())
arr = [list(map(int, input().split())) for _ in range(100)]
max = 0
# 가로 탐색
for i in range(100):
check = sum(arr[i][0:100])
if check >= max:
max = check
# 세로 탐색
for i in range(100):
check = 0
for j in range(100):
check += arr[j][i]
if check >= max:
max = check
# 대각선 탐색1
check = 0
for i in range(100):
check += arr[i][i]
if check >= max:
max = check
# 대각선 탐색2
check = 0
for i in range(100):
check += arr[i][99-i]
if check >= max:
max = check
print(f"#{test_case} {max}")
개선 답안1
for문 한 번으로 대각선 합 두 개 구하기
for _ in range(10) :
T = int(input())
array = []
for i in range(100) :
array.append(list(map(int, input().split())))
# 가로줄의 합
max_1 = 0
for i in range(100) :
sum = 0
for j in range(100) :
sum += array[i][j]
if sum > max_1 :
max_1 = sum
# 세로줄의 합
max_2 = 0
for i in range(100) :
sum = 0
for j in range(100) :
sum += array[j][i]
if sum > max_2 :
max_2 = sum
# 대각선의 합
max_3 = 0
for i in range(100) :
sum1 = 0 ; sum2 = 0
sum1 += array[i][i]
sum2 += array[i][99-i]
if max(sum1, sum2) > max_3 :
max_3 = max(sum1, sum2)
print("#{} {}".format(T, max(max_1, max_2, max_3)))
개선 답안2
- 100행을 리스트로 읽어 하나씩 방문하며
- 각 자리의 수는 미리 선언한 배열 인덱스에 맞춰서 더함 (column 배열)
- 우하향 위치라면 (i == k) 또는 좌하향 위치라면(i + k == 99) 해당 값을 미리선언한 변수에 더함
- 각 행의 합을 구해서 지금까지 행의 합보다 크다면 결과 값 업데이트
- 최종적으로 구한 모든 수 ( 행 최대 합, 열 최대합, 우하향 합, 좌하향 합) 중 가장 큰 수를 출력
for test in range(1, 11):
n = int(input()) # test no.
result = 0
column = [0]*100 # 각 열의 총합
rightDown, leftDown = 0, 0
for i in range(100):
line = list(map(int, input().split()))
for k in range(100):
if i == k:
rightDown += line[k] # 우하향 대각선 합
if i + k == 99:
leftDown += line[k] # 좌하향 대각선 합
column[k] += line[k] # 열의 합
result = max(result, sum(line)) # 지금까지 행의 합 중 가장 큰 수
result = max(result, max(column), rightDown, leftDown) # 가장 큰 수 찾기
print("#{} {}".format(n, result))
참고 자료
[SWEA][파이썬] 1209. [S/W 문제해결 기본] 2일차 - Sum
문제 링크 : swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13_BWKACUCFAYh SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com for _ in range(1
o-sae.tistory.com
https://seen-young.tistory.com/54?category=1053952
[SWEA] 파이썬 1209. Sum
~목차~ 문제 문제 해결 포인트 작성 코드 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&contestProbId=AV13_BWKACUCFAYh&categoryId=AV13_BWKACUCFAYh&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&se
seen-young.tistory.com