[SWEA] - 1209. sum

jjiani·2021년 2월 15일
0

SWEA

목록 보기
11/20
post-thumbnail

swea - 문제 링크

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] # 열을 고정시키고 행을 바꿔가면서 더해주기

: 정사각 배열이기 때문에 네가지 한번에 처리 가능하다!

profile
¡Bienvenido a mi velog!🐣

1개의 댓글

comment-user-thumbnail
2021년 2월 17일

다른 사람들은 대개 미리 파이썬을 겪고 오는 경우가 많으니까요 ㅎㅎ;;; 지안님이 정상인 거고, 다른 사람들이 비정상인 겁니다. 용기 잃지 말고 꾸준히 해 주세요 :)

답글 달기