728x90
반응형
풀기 전 생각해보기😮
- 대각선에 위치한 값을 탐색하는 방법
- 주어진 이차원 배열 내에서 탐색
풀이🛫
T = int(input())
for t in range(T):
N = int(input())
arr = [list(map(int, input().split())) for i in range(N)]
# 탐색 방향 설정 : 2시, 4시, 8시, 10시 방향 순
cv = [-1, 1, 1, -1]
rv = [1, 1, -1, -1]
# 한 인덱스를 기점으로 대각선 값의 합을 담을 리스트 정의
li = []
for col in range(N):
for row in range(N):
# 해당 인덱스의 값 저장
idx_sum = arr[col][row]
# 대각선에 위치한 값의 합 계산
for i in range(4):
for j in range(1, N):
ncol = col+cv[i]*j
nrow = row+rv[i]*j
if 0<=ncol<N and 0<=nrow<N:
idx_sum += arr[ncol][nrow]
li.append(idx_sum)
print("#"+str(t+1), max(li))
핵심 정리🎁
- 기준이 되는 방향(v: vector)를 정의하고 for문을 통해 탐색을 진행할 수 있다.
- 최대 대각선의 길이는 N이므로, 1부터 N길이의 대각선 값을 더한다
cf. arr[col][row]에 해당하는 값은 이미 idx_sum에 저장해두고 탐색을 시작했기 때문에 대각선의 길이가 0일 때는 고려하지 않고 제외한다.
후기 😎
- 한 대각선 방향을 기준으로 최대 거리까지 탐색을 우선하는 방식을 먼저 시도했으나, 결국 코드를 완성시키지 못했다. 이를 대신해 가까운 거리부터 이차원 배열 내에 해당하는 값들을 우선적으로 탐색하는 방법을 생각해냈다.
- 조금은 조잡한(?) 느낌이 들지만 스스로의 힘으로 풀어냈다는 점에서 만족한다.
'SSAFY > SWEA' 카테고리의 다른 글
[SWEA] 1954. 달팽이 숫자_파이썬 (0) | 2022.08.09 |
---|---|
[SWEA] #11014. 농작물 수확_파이썬 (0) | 2022.08.04 |
[SWEA] # 11012. 사각영역들의 합_파이썬 (0) | 2022.08.02 |
[SWEA] 10593. 가로세로 합_파이썬 (0) | 2022.08.01 |
[SWEA] #1974. 스도쿠 검증_파이썬 (0) | 2022.07.27 |