코딩테스트/SWExpertAcademy

Sum Python(SW Expert Academy)

멍토 2020. 2. 22.

난이도 : D2

문제번호 : 1204

※ 저의 풀이가 무조건적인 정답은 아닙니다.

다른 코드가 좀더 효율적이고 좋을 수 있습니다.

다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.

문제 주소 및 출처입니다.

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13_BWKACUCFAYh&categoryId=AV13_BWKACUCFAYh&categoryType=CODE

 

SW Expert Academy

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

swexpertacademy.com


목차

1. 문제 설명

2. 문제 해석

3. 소스 코드


1. 문제 설명

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

다음과 같은 5X5 배열에서 최댓값은 29이다.

제약사항

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

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

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

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

입력

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

출력

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

예시

입력 출력
홈페이지 참고 홈페이지 참고

2. 문제풀이

어떤줄의 합이 제일큰지를 구하는 문제입니다.

간단하게 각 가로마다 값과 세로마다 값을 구해서

최대값만 가지고 간뒤

대각선을 계산해서 마지막까지 큰수를 출력하면 끝나는 간단한 문제였습니다.

 


3. 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#가로세로 대각선합중 제일큰것 구하기
#D2_1209 sum
= 10
for t in range(1, T+1):
    abc = input()
    lst = []
    #반복문을 통해 100 x 100의 리스트 만들기
    for i in range(100):
        temp_lst = list(map(int, input().split()))
        lst.append(temp_lst)
    max_sum = 0
    #가로, 세로합 구하기
    for i in range(100):
        sum1, sum2 = 00
        for j in range(100):
            sum1 += lst[i][j]
            sum2 += lst[j][i]
        max_sum = max(sum1, sum2, max_sum)
    #대각선합 
    for i in range(100):
        sum1, sum2 = 00
        sum1 += lst[i][i]
        sum2 += lst[i][99-i]
    max_sum = max(sum1, sum2, max_sum)
    print("#{} {}".format(t, max_sum))

댓글

💲 광고입니다.