문제 링크
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
제출 코드
- Pass
T = 10
for test_case in range(1, 11):
tc_num = int(input())
row_list = []
# 100개의 줄을 하나의 리스트에.
for i in range(100):
row_list.append(list(map(int, input().split())))
# row 합 중 max를 구해보자.
# 일단 row의 합들을 리스트로.
row_sum = []
for i in range(100):
row_sum.append(sum(row_list[i]))
row_max = max(row_sum)
# column 합 중 max를 구해보자.
# column 합들을 리스트로.
col_sum = []
for i in range(100):
col_sum.append(0)
for j in range(100):
col_sum[i] = col_sum[i] + row_list[j][i]
col_max = max(col_sum)
# 우하향 대각선 합
x_down_sum = 0
for i in range(100):
x_down_sum = x_down_sum + row_list[i][i]
# 우상향 대각선 합
x_up_sum = 0
for i in range(100):
x_up_sum = x_up_sum + row_list[i][99-i]
sum_list = [row_max, col_max, x_down_sum, x_up_sum]
result = max(sum_list)
print(f"#{test_case} {result}")
풀이
- 가로줄 한 줄의 숫자들을 하나의 리스트로 해서 그 리스트 하나 하나를 요소로 하는 리스트를 만든다.
- 만든 리스트를 이용해 가로줄의 합, 세로줄의 합, 대각선의 합을 각각 구해서 그 중에서 최댓값을 구한다.
알아둘 것 & 생각해볼 것
- 처음에 계속 memory error가 났는데 알고보니 빈 리스트에 새로운 요소를 넣을 때 딕셔너리에 넣듯이 코드를 작성해서 그런 거였다.
# 딕셔너리의 경우
dic = {}
dic["key"] = "value"
# 이러면 dic = {"key": "value"}가 되지만
# 리스트의 경우
array = []
array[0] = 0
# 이런다고 array = [0]이 되는 것이 아니다!
# IndexError: list assignment index out of range
# 리스트는 일단 그 자리의 요소를 추가해주어야.
array = []
array.append(1)
# 그 후에 그 요소 자리에 다른 값을 저장하는 방식
array[0] = 0
- 또한 append() 메서드는 return이 존재하지 않기 때문에 b = a.append(x) 이런 식으로 변수에 저장해버리면 b를 출력했을 때 None이 나오므로 주의해야 한다.
- 리스트 관련 함수들이 많으므로 따로 정리해둘 것!!
'ALGORITHM > SWEA' 카테고리의 다른 글
[SWEA D2] 1959. 두 개의 숫자열(Python) (0) | 2023.01.15 |
---|---|
[SWEA D1] 1945. 간단한 소인수분해(Python) (0) | 2023.01.13 |
[SWEA D1] 2056. 연월일 달력(Python) (0) | 2023.01.13 |
[SWEA D2] 1204. [S/W 문제해결 기본] 1일차 - 최빈수 구하기(Python) (0) | 2023.01.11 |
[SWEA D1] 2047. 신문 헤드라인(Python) (0) | 2023.01.11 |