난이도 : D2
문제번호 : 1204
※ 저의 풀이가 무조건적인 정답은 아닙니다.
다른 코드가 좀더 효율적이고 좋을 수 있습니다.
다른사람들의 풀이는 언제나 참고만 하시기 바랍니다.
문제 주소 및 출처입니다.
목차
1. 문제 설명
2. 문제 해석
3. 소스 코드
1. 문제 설명
다음 100X100의 2차원 배열이 주어질 때, 각 행의 합, 각 열의 합, 각 대각선의 합 중 최댓값을 구하는 프로그램을 작성하여라. |
제약사항
총 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
T = 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 = 0, 0
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 = 0, 0
sum1 += lst[i][i]
sum2 += lst[i][99-i]
max_sum = max(sum1, sum2, max_sum)
print("#{} {}".format(t, max_sum))
|
'코딩테스트 > SWExpertAcademy' 카테고리의 다른 글
숫자카드 Python(SW Expert Academy) (0) | 2020.02.24 |
---|---|
전기버스 Python(SW Expert Academy) (0) | 2020.02.23 |
최빈수 구하기 Python(SW Expert Academy) (0) | 2020.02.21 |
수도 요금 경쟁 C++(SW Expert Academy) (0) | 2020.02.18 |
아름이의 돌 던지기 C++(SW Expert Academy) (0) | 2020.02.17 |
댓글