Gaegul's devlog

[SWEA] 1209. Sum 본문

Algorithm/Algorithm 풀이

[SWEA] 1209. Sum

부지런깨꾹이 2021. 8. 21. 14:12
728x90
반응형

SW Expert Academy [S/W 문제해결 기본] 시리즈

1209. Sum

 

[문제]

다음 100X100의 2차원 배열이 주어질 때, 각 행의 합, 각 열의 합, 각 대각선의 합 중 최댓값을 구하는 프로그램을 작성하여라.

[제약 사항]


총 10개의 테스트 케이스가 주어진다.

배열의 크기는 100X100으로 동일하다.

각 행의 합은 integer 범위를 넘어가지 않는다.

동일한 최댓값이 있을 경우, 하나의 값만 출력한다.
 

 

[입력]


각 테스트 케이스의 첫 줄에는 테스트 케이스 번호가 주어지고 그 다음 줄부터는 2차원 배열의 각 행 값이 주어진다.

e.g.

1

13 24 13 24 1 7 24 11 22 18 22 16 24 8 15 28 9 24 14 14 28 18 17 9 3 29 22 12 28 2 25 6 11 26 14 19 3 26 13 6 23 3 3 29 13 25 4 27 8 25 28 8 9 17 28 13 24 27 9 25 21 20 6 16 28 5 22 11 9 29 13 26 28 2 11 10 14 14 5 11 26 9 15 3 23 9 8 11 12 6 9 18 6 14 28 21 24 24 20 12
20 28 29 21 27 13 29 16 6 28 5 7 13 20 7 1 11 1 23 12 4 9 27 19 26 2 21 2 1 18 4 20 6 4 18 9 20 3 28 28 1 21 1 2 11 7 20 15 7 29 14 7 15 10 29 24 2 25 29 3 11 9 17 6 2 17 17 11 7 20 26 10 8 1 15 10 2 29 7 9 17 8 25 28 29 12 28 19 3 4 17 17 28 9 2 15 14 6 20 3
13 19 28 23 11 1 19 5 5 28 19 18 16 14 26 20 6 12 20 18 16 22 25 21 25 29 3 ............

[출력]


#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다.

e.g.

#1 1712
#2 1743
.......
.......


[코드]

def solve(arr):
    large_row_list = list()
    large_col_list = list()
    large_d = 0
    large_b = 0
    large_col = 0

    for i in range(100):  
        
        large_row_list.append(sum(arr[i])) # for문 돌며 각 행들의 합 list에 넣기 
        large_d+=arr[i][i] #대각
        large_b+=arr[99-i][i] #반대각

        for j in range(100):
            large_col+=arr[j][i] #for문 돌며 각 열들 합 list에 넣기

        large_col_list.append(large_col)  
        large_col = 0 
        
    max_num =  max(max(large_row_list), large_d, large_b, max(large_col_list)) # 최댓값 뽑기
    return max_num

for t in range(1,11): #10개 테스트   
    case = int(input())
    arr = [list(map(int, input().split())) for _ in range(100)] 
    print(f'#{t} {solve(arr)}')

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13_BWKACUCFAYh#none

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

[핵심 solution]

1. for문 1번에 행을 한번에 조회할 수 있음. 합을 리스트에 append.

2. 대각과 반대각은 [1][1], [2][2], [3][3] .. 규칙을 가짐. 반대각은 그의 반대.

3. 열 조회는 한번에 안됨으로 한 열을 돌며 요소들을 다 더해줌.

4. 각 경우중 최댓값을 찾기 위해 max 취해줌.

 

728x90
반응형

'Algorithm > Algorithm 풀이' 카테고리의 다른 글

[SWEA] 1213. String  (0) 2021.08.21
[SWEA] 1210. Ladder1  (0) 2021.08.21
[SWEA] 1208. Flatten  (0) 2021.08.11
[SWEA] 1206. View  (0) 2021.08.11
[SWEA] 1204. 최빈수 구하기  (0) 2021.08.11
Comments