구름LEVEL - (88520) 놀이공원
구름LEVEL - 놀이공원
문제 설명
입/출력 예시
예시 1
- 입력
1
5 3
1 0 0 1 0
0 1 0 0 1
0 0 0 1 0
0 0 0 0 0
0 0 1 0 0
- 출력
1
풀이
문제의 요구사항이 매우 간단하게 N과 K의 만큼의 정사각형에서의 탐색을 요구했다. 놀이공원을 K 정사각형으로 탐색 가능한 모든 수들 중 최소값을 리턴하면 되었다.
코드를 작성하면서 파이썬의 리스트 슬라이싱을 이용하여 pythonic
한 알고리즘을 작성해보았다.
먼저 놀이공원 matrix
에서 K 만큼의 구역을 새로운 리스트로 생성했다.
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_matrix = [row[0:2] for row in matrix[0:2]]
# new_matrix [[1, 2], [4, 5]]
그다음 2차원 리스트인 new_matrix
의 요소들을 모두 포함하는 1차원 리스트로 변환 하였다.
matrix = [[1, 2], [4, 5]] # 2차원 리스트
sum(matrix, []) # [1, 2, 4, 5]
마지막으로 1차원 리스트의 sum()
을 계산하여 원하는 값을 얻을 수 있었다.
sum(sum([row[0:2] for row in matrix[0:2]], [])) # 12
코드(Python)
t = int(input())
answer = []
for _ in range(t):
n, k = map(int, input().split())
matrix = []
for _ in range(n):
matrix.append(list(map(int, input().split())))
result = []
for y in range(n-k+1):
for x in range(n-k+1):
result.append(sum(sum([row[x:x+k] for row in matrix[y:y+k]], [])))
answer.append(min(result))
for a in answer:
print(a)
댓글남기기