SSAFY/SWEA

[SWEA] 10593. 가로세로 합_파이썬

728x90
반응형

풀기 전 생각해보기😮

  • 가로열과 세로열의 합 탐색하기
  • 중복되는 값 제거

풀이🛫

# 가로세로 합

T = int(input())

for t in range(T):
    N = int(input())
    arr = [list(map(int, input().split())) for t in range(N)]
    answer = 0 
    
    row_list, col_list = [], []

	# 가로열(행)의 합 리스트 구하기
    for col in range(N):
        row_sum = 0
        for row in range(N):
            row_sum += arr[col][row]
        row_list.append(row_sum)

	# 세로열(열)의 합 리스트 구하기
    for row in range(N):
        col_sum = 0
        for col in range(N):
            col_sum += arr[col][row]
        col_list.append(col_sum)
    
    # 합계 리스트의 인덱스 번호를 통해 arr[col][row]의 정보 업데이트
    for col in range(N):
        for row in range(N):
            arr[col][row] = row_list[col] + col_list[row] - arr[col][row]
            
            # 최대값 구하기
            if answer < arr[col][row]:
                answer = arr[col][row]

    print("#"+str(t+1), answer)

 

핵심 정리🎁

  • 가로열 탐색 : col for문에서 row열 조회
  • 세로열 탐색 : row for문에서 col열 조회
  • 가로, 세로열 합계를 탐색하는  과정에서 해당 위치의 값이 중복되어 합계되기 때문에 한번은 제거해주어야 한다.

 

후기 😎

  • 이상적인 코드 풀이인지는 잘 모르겠다. 왠지 더 멋진 풀이 코드가 있을 것 같아서 solving club에서 풀이하신 분들께 정답 코드를 구해봐야 할 듯 하다.