[프로그래머스] 공원
Programmers - [PCCE 기출문제] 공원
사용 언어 - C++
소요 시간 - 약 35분
정답 여부 - O
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/340198
문제 요약
- 정사각형 크기의 돗자리가 여러개 주어짐
- 공원에는 여러 돗자리들이 깔려있음
- 비어있는 칸에 깔 수 있는 돗자리 중 가장 큰 돗자리의 한 변 return
빈칸 : ⭕
나머지 : 깔려있는 돗자리
🌟🌟⭕⭐⭐⭐⭐⭕
🌟🌟⭕⭐⭐⭐⭐⭕
⭕⭕⭕⭕⭕⭕⭕⭕
❤️❤️⭕⭕⭕⭕🌕⭕
❤️❤️⭕⭕⭕⭕⭕🌙
❤️❤️⭕⭕⭕⭕⭕🌙
최종 코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int CheckMat(vector<vector<string>> park, int InHeight, int InWidth, int InMat)
{
for(int i = 0; i < InMat; i++)
{
for(int j = 0; j < InMat; j++)
{
bool bCheck = false;
bCheck |= (InHeight + i >= park.size());
bCheck |= (InWidth + j >= park[0].size());
//bCheck |= (park[InHeight + i][InWidth + j] != "-1");
if(bCheck || park[InHeight + i][InWidth + j] != "-1")
return -1;
}
}
return InMat;
}
int solution(vector<int> mats, vector<vector<string>> park) {
int answer = -1;
//가장 작은 돗자리부터 검사하기 위해
sort(mats.begin(), mats.end());
for(int i = 0; i < mats.size(); i++)
{
for(int j = 0; j < park.size(); j++)
{
for(int k = 0; k < park[0].size(); k++)
{
if(park[j][k] != "-1")
continue;
//가장 큰 돗자리 크기 구하기
answer = max(answer, CheckMat(park, j, k, mats[i]));
}
}
}
return answer;
}
트러블 슈팅
- X
문제 풀이 후 소감
- 풀었던 1단계 문제 중에 가장 어려웠던 것 같다. 생각해야할 것도 많았고, for문을 3개 사용할 때부터 이게 맞나?라는 생각이 들었다.