2026. 3. 26. 23:52ㆍ언리얼 7기 본캠프
//빛의 경로 사이클 문제. 삼차원 벡터라는 해괴한(?) 벡터를 사용해야 했는데값을 정리하는게 생각보다 어려웠음
//중간에 재귀함수로 답을 적었다가 While로 순회했는데 케이스에 따라 재귀가 심하게 쌓여 스택 오버플로우가
//날 수 있다고 생각해서였음. 개인적으로는 재귀가 조금 더 직관적이었는데 비슷한 문제가 더 나오면
//케이스를 비교해볼 수 있을듯
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> dx = {0, 1, 0, -1};
vector<int> dy = {-1, 0, 1, 0};
vector<int> solution(vector<string> grid) {
vector<int> answer;
int row = grid.size();
int column = grid[0].length();
vector<vector<vector<bool>>> isvisited(row, vector<vector<bool>>(column, vector<bool>(4)));
for(int r = 0; r < row; r++)
{
for(int c = 0; c < column; c++)
{
for(int w = 0; w < 4; w++)
{
if (isvisited[r][c][w]) continue;
int length = 0;
int currentrow = r;
int currentcol = c;
int currentway = w;
while(true)
{
if (isvisited[currentrow][currentcol][currentway])
{
answer.push_back(length);
break;
}
isvisited[currentrow][currentcol][currentway] = true;
switch(grid[currentrow][currentcol]){
case 'S':
currentway = currentway;
break;
case 'L':
currentway = (currentway - 1 + 4) % 4;
break;
case 'R':
currentway = (currentway + 1) % 4;
break;
};
currentrow = (currentrow + dy[currentway] + row) % row;
currentcol = (currentcol + dx[currentway] + column) % column;
length++;
}
}
}
}
sort(answer.begin(), answer.end());
return answer;
}
cs면접 문제 복기
C++의 TMP에 대해서, 장점과 단점
TMP는 Template Meta Programming의 약자이며, 템플릿을 이용해 컴파일 타임에 타입 결정, 조건 분기, 계산 등을 수행하는 기법임
장점은 런타임 비용 감소, 타입 안정성, zero-cost abstraction에 가깝게 설계할 수 있다는 점임
단점은 코드 가독성 저하, 긴 컴파일 시간, 난해한 에러 메시지, 코드 부풀기 문제가 있다는 점임
즉 TMP는 강력하지만, 복잡성과 유지보수 비용도 큰 도구라고 볼 수 있음
C++에서 매크로 함수의 작동방식, 인라인 함수와의 차이와 장단점
매크로는 전처리 단계에서 소스코드를 문자 치환하는 방식이라 타입 검사와 스코프가 없고, 부작용 위험이 있음
인라인 함수는 실제 함수이므로 타입 검사, 스코프, 디버깅이 가능하고 더 안전함
매크로는 조건부 컴파일이나 로그/토큰 처리 같은 전처리기 기능에 유리함
일반적인 함수 대체 용도라면 보통 매크로보다 인라인 함수가 더 적절함
C++의 new / delete와 C의 malloc/free중 오버로딩이 되는것과 안되는것
C++의 new / delete는 연산자이기 때문에 operator new / delete 형태로 오버로딩할 수 있음
반면 malloc / free는 C 라이브러리의 일반 함수이므로 오버로딩할 수 없음
또 new / delete는 생성자와 소멸자 호출까지 포함하지만, malloc / free는 단순 메모리 할당과 해제만 수행함
즉 오버로딩 가능 여부와 객체 생명주기 관리 여부가 큰 차이임
'언리얼 7기 본캠프' 카테고리의 다른 글
| 260402 TIL - 팀프로젝트 2일차 (0) | 2026.04.02 |
|---|---|
| 260331 TIL - 챕터4 팀프로젝트 발제, 인벤토리 시스템 (0) | 2026.03.31 |
| 260325 TIL - 챕터4 멀티플레이어 게임개발 13일차 (0) | 2026.03.25 |
| 260324 TIL - 챕터4 멀티플레이어 게임개발 12일차 (0) | 2026.03.24 |
| 260323 TIL - 챕터4 멀티플레이어 게임개발 11일차 (0) | 2026.03.23 |