import sys
sys.stdin = open('input.txt', 'r')
for test_case in range(1, 11):
# 2차원리스트를 만들 빈 리스트
arr = []
T = int(input())
# 변수를 쓸 필요가 없을것같아 '_'로 썼다.
# 크기가 100*100으로 정해져서 range범위에 100을 줌.
for _ in range(100):
# 인풋으로 들어온것을 리스트로 받아서
sub_arr = list(map(int, input().split()))
# arr리스트에 추가해줌.
arr.append(sub_arr)
# 사실 100*100으로 정사각 배열이기때문에 굳이 안해줘도 되는 작업인듯?
N, M = len(arr), len(arr[0])
# 최대값을 저장할 변수
max_sum = 0
# 행끼리 더해주기
for i in range(N):
# 한 줄 더하고 난 뒤 초기화해주기
r_total = 0
for j in range(M):
r_total += arr[i][j]
# 만약 행 한 줄 더한 값이 max_sum보다 크다면 갱신(더할때마다 체크하기)
if r_total > max_sum:
max_sum = r_total
# 열끼리 더해주기
for i in range(M):
# 열 더해준 값 초기화해주기
c_total = 0
for j in range(N):
c_total += arr[j][i]
# 만약 열 한줄 더해준것이 max_sum보다 크다면 갱신(더할때마다 체크하기)
if c_total > max_sum:
max_sum = c_total
# 대각선 더해주기
for diag in range(N):
r_sum = l_sum = 0
l_sum += arr[i][i] #왼쪽에서 오른쪽으로
r_sum += arr[i][M-1-i] #오른쪽에서 왼쪽으로
# 만약 왼쪽합이 오른쪽합보다 크다면
if l_sum > r_sum:
# max_sum과 비교해서 갱신
if max_sum < l_sum:
max_sum = l_sum
# 아니라면
else:
# 오른쪽합을 max_sum과 비교해서 갱신
if max_sum < r_sum:
max_sum = r_sum
print('#{} {}'.format(test_case, max_sum))
🔑 내장함수를 최대한 쓰지 않고 구현하였다.
2차원리스트는 처음이라 입력받는 것부터 어려웠다. 하다보면 익숙해지겠지...? 익숙해져야할 것들이 너무 많다,,,😭😭 노력하지 않고 잘하는 방법은 왜 없나여,,, 4차산업혁명시대에 언제쯤 그런 방법이 나올까...!!나만못해,,, 나만바보야,,,🤪
+ 💡 좋은 방법 추가!
sum3 = 0 #왼쪽에서 오른쪽으로 대각선 합
sum4 = 0 #오른쪽에서 왼쪽으로 대각선 합
for i in range(len(arr)):
# 두번째 for문의 역할이 대각선합에서는 필요 없으므로 여기서 돌려준다!!
sum3 += arr[i][i]
sum4 += arr[i][99-i]
sum1 = 0 #행끼리 합
sum2 = 0 #열끼리 합
for j in ragne(len(arr)):
sum1 += arr[i][j] # 행을 고정시키고 열을 바꿔가면서 더해주기
sum2 += arr[j][i] # 열을 고정시키고 행을 바꿔가면서 더해주기
: 정사각 배열이기 때문에 네가지 한번에 처리 가능하다!
다른 사람들은 대개 미리 파이썬을 겪고 오는 경우가 많으니까요 ㅎㅎ;;; 지안님이 정상인 거고, 다른 사람들이 비정상인 겁니다. 용기 잃지 말고 꾸준히 해 주세요 :)