Study/Algorithm
[SWEA] 2001. 파리퇴치
pink_salt
2024. 5. 18. 03:32
728x90
- 1차 접근 방법
- 정답 여부
1차 접근 방법
N * N 의 사이즈에서 각 칸 마다 파리의 숫자가 있는데 M * M 사이즈의 파리채를 통해 가장 많은 수의 파리를 잡아야 하는 것이 목적이다.
이를 위해 N * N 배열을 순회하면서 M * M 사이즈만큼 확인해서 각 sum 을 구하고 그 가운데 최댓값을 구하는 방법을 고안하였다.
그러기 위해서는 N - M + 1 범위까지만 순회하여도 M 사이즈 만큼은 다시 순회를 할 것이기 때문에 세로, 가로는 처음에 N - M +1 만큼 순회를 2중으로 순회를 하고,그 안에서 다시 M 만큼 가로, 세로 순회를 해야한다.
그리고 M만큼 순회를 하기 전에 현재 파리채의 sum을 0으로 초기화하고 계산한 다음 max_sum과 비교하면서 최댓값을 정해야한다.
아래가 구현 코드이다!!
for문이 4번 중첩되다니...ㅜ
T = int(input())
for test_case in range(1, T + 1):
N, M = map(int, input().split())
N_list = [list(map(int, input().split())) for _ in range(N)]
max_sum = 0
for i in range(N - M + 1):
for j in range(N - M + 1):
current_sum = 0
for x in range(M):
for y in range(M):
current_sum += N_list[i + x][j + y]
if current_sum > max_sum:
max_sum = current_sum
print(f'#{test_case} {max_sum}')
정답 여부
- 정답!
728x90
반응형