728x90
반응형
풀기 전 생각해보기😮
- 이차원 배열에서 파리채를 휘둘렀을 때 잡을 수 있는 파리 수 탐색
- 가능한 모든 경우의 수 탐색
풀이🛫
T = int(input())
for a in range(T):
N, M = map(int, input().split())
arr = [list(map(int, input().split())) for i in range(N)]
kills = []
# 파리채를 내려칠 곳 탐색
for i in range(N-M+1):
for j in range(N-M+1):
fly = 0
# 해당 위치를 타격했을 때 잡을 수 있는 파리의 수 탐색
for k in range(M):
for l in range(M):
fly += arr[i+k][j+l]
kills.append(fly)
# 배열 범위 안에서 가능한 경우의 수 중에서 가장 많은 파리를 잡을 때의 수 출력
print("#"+str(a+1), max(kills))
핵심 정리🎁
# NxM의 배열 탐색
for i in range(N):
for j in range(M):
arr[i][j]
- range(N-M+1) : 파리채를 휘두를 수 있는 공간
ex) M의 크기가 1일 경우, 모든 배열 공간을 대상으로 탐색할(파리채를 휘두를) 수 있다. 그런데 파리채의 크기가 커지게 되면, 탐색할 수 있는 배열 공간은 줄어들게 된다. 이에 따라 탐색 범위를 조절해줘야 하기 때문에 N-M+1으로 조정하였다.- N이 5일 때, 파리채(M)이 1일 때 휘두를 수 있는 경우의 수 = 25가지
- 동일한 조건에서 M = 2일 때 휘두를 수 있는 경우의 수 = 16가지
- 동일한 조건에서 M = 3일 때 휘두를 수 있는 경우의 수 = 9가지 ...
링크💎
후기 😎
- 풀고나면 재밌는 문제였는데, 풀기전에는 겁을 잔뜩 먹고 도전했다.
- 이차원 배열 문제에서 두려움을 극복했으면 좋겠다.
- 그동안 테스트 케이스를 JupyterNotebook에서 열심히 입력해댔건만.. VSC에서 한방에 가능하단 것을 이제서야 알고서 충격..
'SSAFY > SWEA' 카테고리의 다른 글
[SWEA] #1974. 스도쿠 검증_파이썬 (0) | 2022.07.27 |
---|---|
[SWEA] #1979. 어디에 단어가 들어갈 수 있을까_파이썬 (0) | 2022.07.26 |
[SWEA] #4406. 모음이 보이지 않는 사람_파이썬, 리스트 특정 요소 모두 제거 (0) | 2022.07.18 |
[SWEA] 2007. 패턴 마디의 길이_파이썬 (0) | 2022.07.17 |
[SWEA] 1985. 중간 평균값 구하기_파이썬 (0) | 2022.07.15 |