728x90
반응형
풀기 전 생각해보기😮
- 영역을 벗어난 곳을 계산해야 할 경우 어떻게 처리해야 할지
- 이미 계산된 곳을 계산하지 않으려면 어떤 처리를 해야 할지
풀이🛫
T = int(input())
for i in range(T):
# 배열 생성
N, M = map(int, input().split())
arr = [list(map(int, input().split())) for i in range(N)]
carr = [[True] * N for i in range(N)]
answer = 0
# 정사각형 값의 합 구하기
for j in range(M):
row, col, length = map(int, input().split())
s = 0
for c in range(length):
for r in range(length):
# 제한된 범위를 넘어가지 않도록 조건 설정
if 0<=row+r<N and 0<=col+c < N:
if carr[row+r][col+c] == True:
s += arr[row+r][col+c]
carr[row+r][col+c] = False
answer += s
print("#"+str(i+1), answer)
핵심 정리🎁
if 0<=row+r<N and 0<=col+c < N:
if carr[row+r][col+c] == True:
s += arr[row+r][col+c]
carr[row+r][col+c] = False
- NxN 범위 밖으로 나갈 때는 계산이 되지 않도록 if 조건문을 추가해주었다.
- 한번 계산된 인덱스가 두번 계산되지 않도록 True/False로 checker array를 생성해서 표기해주었다.
후기 😎
- try ~ catch 문으로 먼저 풀었었는데, 알고리즘에서도 출력되는 오류를 정확하게 확인하기 위해서는 try ~ catch문을 이용해 풀지 않는 것을 권장하는 편인 듯 하다.
- 영역을 벗어날 때 if절을 통해 풀어낼 수 있는 능력을 기르도록 하자
'SSAFY > SWEA' 카테고리의 다른 글
[SWEA] #11014. 농작물 수확_파이썬 (0) | 2022.08.04 |
---|---|
[SWEA] #11010 대각 최대 합_파이썬 (0) | 2022.08.02 |
[SWEA] 10593. 가로세로 합_파이썬 (0) | 2022.08.01 |
[SWEA] #1974. 스도쿠 검증_파이썬 (0) | 2022.07.27 |
[SWEA] #1979. 어디에 단어가 들어갈 수 있을까_파이썬 (0) | 2022.07.26 |