https://level.goorm.io/exam/88520/%EB%86%80%EC%9D%B4%EA%B3%B5%EC%9B%90/quiz/1
어느 한 도시에서는 공장 단지가 부도가 나게 되어 넓은 공터가 경매에 올라오게 되었다. 이 공터는 가로와 세로가 각각 N km인 정사각형 모양이며 가로와 세로가 1 km인 정사각형 격자 모양으로 영역을 나누어 개별적으로 판매하고 있다.
그 도시에 살고있던 한 부자 경영인은 평소 자신이 기획해오던 놀이공원 건설 프로젝트를 몰래몰래 진행하기로 결정하였다. 때마침 경매에 올라온 이 공터에 관심을 가지게 된 경영인은 판매 중인 땅들 중 일부에는 기존의 공장에서 배출 된 폐기물들이 방치되어 있다는 사실을 알게 되었다. 놀이공원 건설을 위해서는 가로로 K km, 세로로 K km인 정사각형 모양의 영역이 필요한데, 당연히 놀이공원 건설을 위해서는 해당 영역의 폐기물들을 모두 처리해야만 한다.
<N=5, K=3일 때 - 파란색 영역을 선택하면 3개를, 빨간색 영역을 선택하면 1개의 폐기물을 처리해야 한다.>
NxN 격자 모양의 공터에서 KxK 정사각형 크기의 땅을 구매하려고 할 때, 구매할 땅에 포함 된 폐기물의 수를 최소로 할 수 있는 영역을 찾을 수 있는 프로그램을 작성해주자.
입력 형식
첫 줄에는 테스트케이스의 수를 나타내는 1이상 100이하의 자연수 T가 주어진다.
각 테스트케이스의 첫 줄에는 두 자연수 공터의 크기를 나타내는 N과 구매할 땅의 크기를 나타내는 K가 주어진다.
- N은 1이상 100이하의 자연수이다.
- K는 1이상 10이하의 자연수이다. K는 N보다 작거나 같은 값을 가진다.
이후 N줄에 걸쳐서 공터의 각 행의 정보가 차례로 주어진다.
- 각 줄은 공백으로 구분 된 0과 1이 총 N개 주어진다.
- 0은 비어있는 땅을 나타내며, 1은 폐기물이 존재하는 칸을 나타낸다.
출력 형식
각 테스트케이스에 대하여 KxK 모양의 땅을 구매했을 때 얻을 수 있는 최소의 폐기물의 수를 공백없이 한 줄에 출력한다.
문제 출처
53
10010
01001
00010
00000
00100
testCase = int(input())
for _ in range(testCase) :
n, k = map(int, input().split())
board = []
for i in range(n) :
line = list(map(int, input().split()))
board.append(line)
garbaseCountList = []
for i in range(n - k + 1) :
for j in range(n - k + 1) :
garbaseCount = 0
for r in range(k):
for c in range(k) :
if board[i + r][j + c] == 1 : #쓰레기인경우
garbaseCount += 1 #쓰레기 개수 증가
garbaseCountList.append(garbaseCount)
print(min(garbaseCountList))
'코테풀이 > 구현' 카테고리의 다른 글
[프로그래머스 | js] k진수에서 소수 개수 구하기(구현) (0) | 2023.01.12 |
---|---|
[프로그래머스 | 0단계] 옹알이 (1) (0) | 2022.11.24 |
[백준 : 실버3] 3613: Java vs C++(문자열, 구현) (0) | 2022.09.01 |
[백준 | 실버3] 10973: 이전순열(틀림) (0) | 2022.08.30 |
[백준 | 실버3] 2108: 통계학(구현) (0) | 2022.08.30 |