PROGRAMMERS
[프로그래머스/파이썬] [PCCE 기출문제] 10번 / 공원
kode-daks
2025. 1. 9. 16:03
내 풀이
def solution(mats, park):
answer = -1 # 놓을 곳이 없을 경우 반환할 값으로 초기화
found = False # 찾지 못했을 경우로 초기화
# 큰 돗자리부터 시작
for mat in sorted(mats, reverse=True):
# 돗자리가 공원을 넘어가지 않도록 범위 설정
for i in range(len(park)-mat+1):
for j in range(len(park[0])-mat+1):
# 공원의 i, j가 이미 점유되었을 경우 더이상 탐색하지 않고 다음으로 넘어감
if park[i][j] != "-1":
continue
# 끝까지 조건에 걸리지 않으면 찾았다고 가정
found = True
for p in park[i:i+mat]:
l = p[j:j+mat]
l.append('-1') # "-1"이 없는 경우를 없애기 위해
l = list(set(l))
l.remove('-1') # "-1"은 다 지움
if l: # "-1" 외에도 남아있다면 점유되었다는 뜻이므로
found = False # 찾지 못함을 표시하고 나머지는 더 보지 않고 break
break
# 이곳까지 오면 점유되지 않았으므로 found == True 모든 loop 종료
if found:
break
if found:
break
if found:
answer = mat
break
# 끝까지 found == False라면 answer는 -1 그대로
return answer
메모
2차원 리스트에서는 i, j가 헷갈리지 않게 펜 노트를 써보자.