본문 바로가기

Algorithm/Brute Force

(Python3) - 프로그래머스(PCCE 기출문제): 10번 / 공원

반응형

https://school.programmers.co.kr/learn/courses/30/lessons/340198

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

전수조사 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

정답변수 answer 선언 후 -1로 초기화합니다.

📔 풀이과정

park에 대해 2차원 for loop를 수행하면서 다음을 진행합니다.1. 현재칸이 -1이 아니라면 다른 돗자리가 깔려 있으므로 continue합니다.

 

2. mats에 대해 for loop를 수행하며 다음을 진행합니다.  2-1. is_valid flag를 선언해 다시 현재행 + 돗자리 세로 변, 현재열 + 돗자리 가로 변만큼 2차원 영역에 대해 돗자리를 깔 수 있는지 확인해줍니다. 영역을 넘어가거나 해당 영역에 이미 다른 돗자리가 깔려있으면 is_valid를 False로 갱신하는 식으로 확인합니다.  2-2. is_valid가 True라면 깔 수 있는 돗자리의 최댓값을 answer와 비교해 저장합니다.

📔 정답 출력 | 반환

answer를 반환합니다.


📕 Code

📔 Python3

def solution(mats, park):
    answer = -1
    for r in range(len(park)):
        for c in range(len(park[0])):
            if park[r][c] != "-1":
                continue
            for mat in mats:
                is_valid = True
                for i in range(r, r + mat):
                    for j in range(c, c + mat):
                        if i >= len(park) or j >= len(park[0]):
                            is_valid = False
                            continue
                        if park[i][j] != "-1":
                            is_valid = False
                if is_valid == True:
                    answer = max(answer, mat)
    return answer

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.