구현 | SW Expert Academy 12712번 파리 퇴치3 | Python

Table of Contents



SW Expert Academy 12712번 파리 퇴치3 | Python

📌 SW Expert Academy 12712번 문제 바로가기

🔎 문제 설명

💙 D2

- 난이도 ★★☆☆
- 구현

처음엔 스프레이 노즐에 해당하는 부분의 위치를 하나씩 검사해 파리수를 합하는 쪽으로 생각했으나 너무 코드가 더러워져서 생각을 다시 했다.

4방향을 한 번에 하나씩 넓혀서 위치 유효검사를 해주면 훨씬 깨끗하게 코드를 작성할 수 있다. 아래에 성공한 코드를 작성해놓았다. 물론 그냥 구현한 거라 이것보다 더 좋은 코드가 존재할 수 있다. 다른 좋은 방법이 더 없나 고민해봐야겠다.



💻 내 코드

dx_p = [1,-1,0,0]
dy_p = [0,0,-1,1]
dx_t = [1,-1,1,-1]
dy_t = [1,-1,-1,1]

def sum_flies(center):
    x, y = center
    plus, times = flies[x][y], flies[x][y]

    # 4방향 한 번에 더하기
    for i in range(4):
        for j in range(1,M):
            nx_p, ny_p = x + dx_p[i]*j, y + dy_p[i]*j
            nx_t, ny_t = x + dx_t[i]*j, y + dy_t[i]*j
            if 0<=nx_p<N and 0<=ny_p<N:
                plus += flies[nx_p][ny_p]
            if 0<=nx_t<N and 0<=ny_t<N:
                times += flies[nx_t][ny_t]
    return max(plus, times)

T = int(input())
for t in range(T):
    answer = 0
    N, M = map(int, input().split())
    flies = [list(map(int,input().split())) for _ in range(N)]
    for i in range(N):
        for j in range(N):
            answer = max(answer, sum_flies((i,j)))

    print(f'#{t+1}', answer)




 


💙 You need to log in to GitHub to write comments. 💙
If you can't see comments, please refresh page(F5).