260219 TIL - 챕터3 팀프로젝트 8 + @일차
2026. 2. 19. 21:03ㆍ언리얼 7기 본캠프
토요일부터 수요일까지 차라리 코딩을 하고싶었을 정도로 지독한 설날 일정을 보냈기 때문에 몸살이 지독하게 들어서 컨디션이 너무 심하게 안좋았음. 맘같아서는 휴가 내고 쉬고싶었지만 팀프로젝트 기간에 그럴수는 없으니...
//두 큐 합 같게 만들기 문제. 사실 큐라고 되어있긴한데 실제로 큐를 쓰지는 않았고(큐는 합을 구하기가 힘듬)
//벡터를 큐처럼 사용하게 만들어서 푼 문제인데, 약간 투포인터 비스무리한 개념을 이용해서 풀었음
//아직 이걸 이어붙여서 투포인터로 쭉 훑는다는 생각을 하기는 좀 무리가 있는듯
#include <string>
#include <vector>
#include <numeric>
using namespace std;
int solution(vector<int> queue1, vector<int> queue2) {
int answer = 0;
long long q1sum = accumulate(queue1.begin(), queue1.end(), 0LL);
long long q2sum = accumulate(queue2.begin(), queue2.end(), 0LL);
long long totalsum = q1sum + q2sum;
if (totalsum % 2 == 1) return -1;
int q1index = 0, q2index = 0;
int trylimit = (queue1.size() + queue2.size()) * 2;
while (true)
{
if (answer > trylimit) return -1;
if (q1sum == q2sum) break;
if (q1sum > q2sum)
{
long long numtomove = queue1[q1index];
queue2.push_back(numtomove);
q1index++;
answer++;
q1sum = q1sum - numtomove;
q2sum = q2sum + numtomove;
}
else if (q2sum > q1sum)
{
long long numtomove = queue2[q2index];
queue1.push_back(numtomove);
q2index++;
answer++;
q1sum = q1sum + numtomove;
q2sum = q2sum - numtomove;
}
}
return answer;
}
//무인도 여행 문제. 골치아픈 탐색 알고리즘 문제인데...
//아직도 이차원배열이 머리에 바로바로 들어오지가 않아서 수를 정렬하는데 골머리를 썩었음
//그래도 잘 정리해서 풀리긴 한듯. 중간에 row와 columm을 반대로 적는 실수를 하는 바람에 그걸 옮기면서
//이차원 배열에서의 row와 column이 일반적인 느낌과는 조금 다르다는것도 배웠음. 아직도 row column이 헷갈리긴 하는데...
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int BFS(int row, int column, vector<vector<bool>>& isvisited, vector<string>& maps)
{
int sum = 0;
queue<pair<int, int>> search;
search.push({row, column});
sum += maps[row][column] - '0';
isvisited[row][column] = true;
vector<int> drow = {-1, 1, 0, 0};
vector<int> dcol = {0, 0, -1, 1};
while (!search.empty())
{
int currow = search.front().first;
int curcol = search.front().second;
for(int i = 0; i < 4; i++)
{
int newcol = curcol + dcol[i];
int newrow = currow + drow[i];
if (newrow < 0 || newrow >= maps.size() || newcol < 0 || newcol >= maps[0].length()) continue;
if (isvisited[newrow][newcol] || maps[newrow][newcol] == 'X') continue;
isvisited[newrow][newcol] = true;
sum += maps[newrow][newcol] - '0';
search.push({newrow, newcol});
}
search.pop();
}
return sum;
}
vector<int> solution(vector<string> maps) {
vector<int> answer;
int row = maps.size();
int column = maps[0].length();
vector<vector<bool>> isvisited(row, vector<bool>(column, false));
for(int i = 0; i < row; i++)
{
for(int j = 0; j < column; j++)
{
if (maps[i][j] != 'X' && !isvisited[i][j]) answer.push_back(BFS(i, j, isvisited, maps));
}
}
if (answer.empty()) return vector<int>{-1};
sort(answer.begin(), answer.end());
return answer;
}
챌린저반 수업에서는 디커플링에 관한 내용을 배웠는데, 지금 진행중인 팀프로젝트에서는 디커플링이 잘 된 부분도 있고 아직 미흡한 부분도 있어서 이제 공용으로 사용할 델리게이트나 인터페이스를 만들어두고 그걸 같이 사용하는것이 생각보다 좋게 작용하는 부분도 있어서 나쁘지 않았다고 할 수 있음
다만 아직 유기적으로 연결시켜본것이 아니기 때문에 좀 더 신중하게 접근할 필요가 있을 듯. 특히 C++에서는 인터페이스 문법이 영 불편하다던데 실제로도 그렇기도 하고 뭔가 어색하기도 해서...
설 기간 + 오늘까지 계속해서 무기 관련 로직 고치고 인벤토리 UI를 뜯어고치고 있는데, 영 진전이 없음. 버그가 시도때도없이 터지고 제대로 의도안한대로 작동하고 그래서... 컨디션 안좋은거랑 겹쳐서 수정을 너무 적게 해버림. 아무래도 내일까진 몸살에 근육통으로 앓을것 같으니 할수있는만큼 최대한 열심히 해두고 주말에 꼭 컨디션을 회복해서 돌아와야겠음
늙기 싫다...


'언리얼 7기 본캠프' 카테고리의 다른 글
| 260223 TIL - 챕터3 팀프로젝트 10일차 (0) | 2026.02.23 |
|---|---|
| 260220 TIL - 챕터3 팀프로젝트 9일차 (0) | 2026.02.20 |
| 260213 TIL - 챕터3 팀프로젝트 7일차 (0) | 2026.02.13 |
| 260212 TIL - 챕터3 팀프로젝트 6일차 (0) | 2026.02.12 |
| 260211 TIL - 챕터3 팀프로젝트 5일차 (0) | 2026.02.11 |