Coding Test/구현

[구현 알고리즘] 2001. 파리 퇴치 (파이썬)

Klay_J 2023. 4. 17. 18:04

안녕하세요. Harry입니다.

 

본 포스팅의 목적은, 코딩테스트를 준비함에 있어 SWEA에 제시된 문제 풀이와 스스로 얻은 정보를 정리하고자 합니다.

그러므로 단순히 문제를 푸는 것이 중요한 것이 아니라, 문제를 통해 얻어가는 것이 있어야하기 때문에 접근 방식은 이전 기초 300제를 풀었을 때랑 동일합니다.

 

[접근 방식]

- 문제에서 요구하는 역량은 무엇인지?

- 알고 있어야하는 지식은 무엇인지? 에 기반하여 풀이하고자 합니다.

 

- SWEA 문제 링크입니다. : https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PzOCKAigDFAUq&categoryId=AV5PzOCKAigDFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

[풀이 아이디어]

- 파리채가 움직일 수 있는 모든 경우의 수를 파악하여 하나의 리스트에 넣는다.

- 리스트에서 최대값을 출력한다.

 

[코드]

t = int(input())
for i in range(t):
    n,m = map(int,input().split())
    graph = [list(map(int,input().split())) for _ in range(n)]
    lst = []
    # n-m+1 = 파리채 크기가 움직일 수 있는 모든 경우의 수(한칸씩 이동)
    for j in range(n-m+1):
        for k in range(n-m+1):
            num = 0
    # 파리채 크기(m)에 해당하는 값을 Num에 넣기
            for v in range(m):
                for h in range(m):
                    num += graph[j+v][k+h]
    # num 값을 리스트에 모으고 최대값 출력
            lst.append(num)
    print('#'+f"{i+1}",max(lst))