본문 바로가기
Algorithm

[구현/수학] 백준 2167 2차원 배열의 합 - 파이썬(Python)

by jangThang 2022. 3. 23.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    2167번: 2차원 배열의 합

    첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     2차원 배열의 합을 구하는 문제입니다. (i, j)부터 (x, y)까지 '직사각형' 범위의 합만 구합니다. 

     

    1 2 3
    4 5 6

    (1, 3)부터 (2, 3)까지의 합은 9 (3+6)

     

     (1, 3)부터 (2, 3까지의 합이 (1, 3) + (2, 1) + (2, 2) + (2, 3)이 아닙니다.

     

     

     

    3. 코드

    import sys
    input = sys.stdin.readline
    
    #입력
    N, M = map(int, input().split())
    numlist = []
    for _ in range(N):
        numlist.append(list(map(int, input().split())))
    
    K = int(input())
    for _ in range(K):
        i, j, x, y = map(int, input().split())
        res = 0
        for row in range(i-1, x):
            for col in range(j-1, y):
                res += numlist[row][col]
        print(res)

     이중 for문을 이용해서 직사각형 영역의 배열 합을 구해줍니다.

     PyPy3 에서는 통과했지만, Python3에서는 시간초과가 납니다.

     

    star가 되고나서 Tistory

    반응형

    댓글