728x90
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13_BWKACUCFAYh
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
< 📝 문제 >
다음 100X100의 2차원 배열이 주어질 때, 각 행의 합, 각 열의 합, 각 대각선의 합 중 최댓값을 구하는 프로그램을 작성
하여라.
다음과 같은 5X5 배열에서 최댓값은 29이다.
![](https://blog.kakaocdn.net/dn/bgB4kI/btrtITFeTyU/wilfvOg0p08cOqCmjab1HK/img.png)
< ❓ 생각 >
반복문을 통해 행 합, 열 합, 대각선 합을 구한 후 가장 큰 값을 찾기
4개의 값 중 가장 큰 값을 출력
< 💻 코드 >
1.
for tc in range(1,11):
# 테스트 케이스 번호
N = int(input())
# 2차원 배열
arr = [list(map(int, input().split())) for _ in range(100)]
result = 0
# 행 합, 열 합 중 가장 큰 값 찾기
for i in range(100):
# 가로 합
sum_row = 0
# 세로 합
sum_column = 0
for j in range(100):
sum_row += arr[i][j]
sum_column += arr[j][i]
if result < sum_row:
result = sum_row
if result < sum_column:
result = sum_column
# 대각선 합 구하기
# 오른쪽 아래로 가는 대각선 합
a = 0
# 오른쪽 위로 가는 대각선 합
b = 0
for k in range(100):
a += arr[k][k]
b += arr[k][100 - 1 - k]
# 행 합, 열 합, 대각선 합 중 큰 값 찾기
if result < a:
result = a
if result < b:
result = b
print(f'#{tc} {result}')
2.
for _ in range(10):
tc = int(input())
arr = [list(map(int, input().split())) for _ in range(100)]
max_sum = -2100000000
# 1. 행 우선순회 하면서 각 행의 합 구하기
for i in range(100):
# 행 순회 시작점에서 합을 구하기 위한 변수 초기화
row_sum = 0
for j in range(100):
row_sum += arr[i][j]
# 반복문이 끝난시점 : row_sum -> 한 행의 합이 저장되어 있음
# 최대 합만 저장
max_sum = row_sum if row_sum > max_sum else max_sum
# 2. 열 우선순회 합구하기
for i in range(100):
# 열 순회 시작점에서 합을 구하기 위한 변수 초기화
col_sum = 0
for j in range(100):
col_sum += arr[j][i]
# 반복문이 끝난시점 : row_sum -> 열 행의 합이 저장되어 있음
# 최대 합만 저장
max_sum = col_sum if col_sum > max_sum else max_sum
# 3.대각선 순회
# r == c , 대각선 1
# r + c == 99 대각선 2
dia1_sum = 0
dia2_sum = 0
for i in range(100):
for j in range(100):
if i == j:
dia1_sum += arr[i][j]
if i + j == 99:
dia2_sum += arr[i][j]
max_sum = dia1_sum if dia1_sum > max_sum else max_sum
max_sum = dia2_sum if dia2_sum > max_sum else max_sum
print(f'#{tc} {max_sum}')
< ❗ >
1. 2차원 배열 입력하는 법
arr = [list(map(int, input().split())) for _ in range(100)]
2. 조건부 표현식 - if문을 한줄로
if dia2_sum > max_sum:
max_sum = dia2_sum
[결과 = A if 조건 else B]
max_sum = dia2_sum if dia2_sum > max_sum else max_sum
728x90
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[SWEA] 4837. 부분 집합의 합 - Python (0) | 2022.02.20 |
---|---|
[SWEA] 4836. 색칠하기- Python (0) | 2022.02.19 |
[SWEA] 1208. Flatten - Python (0) | 2022.02.19 |
[SWEA] 1945. 간단한 소인수분해 - Python (0) | 2022.02.18 |
[SWEA] 5789. 현주의 상자 바꾸기 - Python (0) | 2022.02.18 |
댓글