260225 TIL - 챕터3 팀프로젝트 12일차
2026. 2. 25. 21:00ㆍ언리얼 7기 본캠프
//거리두기 확인하기 문제. 지금까지 배웠던 이차원배열 관리와 탐색개념을 총망라해서 풀었음
//P를 찾을때마다 최대 2칸거리(X가 아닌 방향으로)로 탐색하는 방식으로 감염여부(?)를 파악함
#include <string>
#include <vector>
using namespace std;
vector<int> drow = {-1, 1, 0, 0};
vector<int> dcol = {0, 0, -1, 1};
void DFS(const vector<vector<string>>& places, vector<vector<bool>>& isvisited, int depth, int row, int col, bool& isnotok, int& roomnum)
{
if (depth >= 2 || isnotok) return;
for (int i = 0; i < 4; i++)
{
int newrow = row + drow[i];
int newcol = col + dcol[i];
if (newrow < 0 || newrow >= places[roomnum].size() || newcol < 0 || newcol >= places[roomnum][0].size()) continue;
if (isvisited[newrow][newcol]) continue;
if (places[roomnum][newrow][newcol] == 'X') continue;
if (places[roomnum][newrow][newcol] == 'P')
{
isnotok = true;
return;
}
isvisited[newrow][newcol] = true;
DFS(places, isvisited, depth + 1, newrow, newcol, isnotok, roomnum);
}
}
bool isroomok(const vector<vector<string>>& places, int& roomnum){
for (int i = 0; i < places[roomnum].size(); i++)
{
for (int j = 0; j < places[roomnum][i].length(); j++)
{
if (places[roomnum][i][j] == 'X' || places[roomnum][i][j] == 'O') continue;
bool isnotok = false;
vector<vector<bool>> isvisited(places[roomnum].size(), vector<bool>(places[roomnum][0].length(), false));
isvisited[i][j] = true;
DFS(places, isvisited, 0, i, j, isnotok, roomnum);
if (isnotok) return false;
}
}
return true;
}
vector<int> solution(vector<vector<string>> places) {
vector<int> answer;
for (int i = 0; i < places.size(); i++)
{
bool check = isroomok(places, i);
if (check) answer.push_back(1);
else answer.push_back(0);
}
return answer;
}
//숫자 카드 나누기 문제. 그냥 최대공약수 활용해서 푸는 그렇게까지 어렵지는 않은 문제였음
//벡터 내의 모든 숫자의 최대공약수를 구해본건 처음인 것 같은데, 최대공약수 수동으로 구하는건 몇번 해봤으니
//numeric 헤더를 써봤는데 이렇게 편할수가 없음... 물론 그냥 구현하는법도 기억은 해놔야겠지만(유클리드 호제법)
//이것도 충분히 좋은 방법중 하나인듯
#include <string>
#include <vector>
#include <numeric>
using namespace std;
int findvectorGCD(vector<int>& vec)
{
if (vec.size() == 1) return vec[0];
int result = vec[0];
for(int i = 1; i < vec.size(); i++)
{
result = gcd(result, vec[i]);
if (result == 1) return 1;
}
return result;
}
int solution(vector<int> arrayA, vector<int> arrayB) {
int answer = 0;
int GCDA = findvectorGCD(arrayA);
int GCDB = findvectorGCD(arrayB);
bool isagood = true, isbgood = true;
for(const int& i : arrayA)
{
if (i % GCDB == 0)
{
isagood = false;
break;
}
}
for(const int& i : arrayB)
{
if (i % GCDA == 0)
{
isbgood = false;
break;
}
}
if (!isagood && !isbgood) return 0;
if (isagood && !isbgood) return GCDB;
if (isbgood && !isagood) return GCDA;
return max(GCDA, GCDB);
}
오늘은 테스트빌드를 완성해서 튜터님에게 보여드리고 상당히 좋은 평가를 받았음. 그래서 힘내서 완성까지 달려보기로 했고. 시간이 촉박하기 때문에 적어도 목요일까지 로직을 최대한 마쳐보고, 이후 더 필요한 로직이 있으면 내가 전담해서 관리하고 다른 팀원분들은 폴리싱 작업에 전념해서 화요일까지 완성하는걸로 가닥을 잡았음
끝이 보이니 조금만 더 화이팅....흑흑

'언리얼 7기 본캠프' 카테고리의 다른 글
| 260227 TIL - 챕터3 팀프로젝트 14일차 (0) | 2026.02.27 |
|---|---|
| 260226 TIL - 챕터3 팀프로젝트 13일차 (0) | 2026.02.26 |
| 260224 TIL - 챕터3 팀프로젝트 11일차 (0) | 2026.02.24 |
| 260223 TIL - 챕터3 팀프로젝트 10일차 (0) | 2026.02.23 |
| 260220 TIL - 챕터3 팀프로젝트 9일차 (0) | 2026.02.20 |