s를 왼쪽으로 ~ 번 회전시킨 결과 중, 올바른 괄호 문자열이 되는 경우의 수를 구하는 문제.이 문제는 '회전 문자열 생성'과 '괄호 유효성 검사' 두 가지 로직을 얼마나 깔끔하게 분리하느냐가 핵심입니다.
s.substr(i) + s.substr(0, i)를 이용해 매 회전마다 새로운 문자열 생성.s + s)한 뒤 길이만큼 슬라이딩 윈도우 방식으로 접근하면 더 직관적일 수 있음.push.top과 짝이 맞는지 확인 후 pop. (스택이 비어있거나 짝이 안 맞으면 즉시 탈락)st.empty()) 유효함.bool isValid(const string& s) {
stack<char> st;
for (char c : s) {
if (c == '(' || c == '{' || c == '[') st.push(c);
else {
if (st.empty()) return false;
if (c == ')' && st.top() != '(') return false;
if (c == '}' && st.top() != '{') return false;
if (c == ']' && st.top() != '[') return false;
st.pop();
}
}
return st.empty();
}
회전 로직과 검증 로직을 분리하면 디버깅이 쉬워지며, 괄호 검증은 전형적인 스택 패턴의 표준임을 다시 확인.
테스트 맵(Sandbox) 환경을 벗어나 실제 게임 레벨로 시스템을 이식하며, 지형 높낮이, 네비게이션 메시(NavMesh), 액터 간 참조 관계 등 다양한 환경 변수를 검증함.
Spawner가 레벨에 배치된 Warehouse 및 PathManager를 정확히 참조하고 있는가?NavMeshBoundsVolume 내부에 있으며, 캐릭터가 지형 아래로 박히거나 공중에 뜨지 않는가?null이 되는 구간은 없는가?테스트 맵에서 정상이어도 실제 레벨에서는 참조/초기화/네비게이션이 즉각적인 변수로 작용한다. 시스템이 어떤 가정에 의존하고 있는지 레벨 테스트를 통해 드러난다.
실제 레벨 스폰 적용 후, Locomotion(이동 애니메이션)이 재생되지 않거나 공격 몽타주가 특정 상황에서 끊기는 현상 확인.
AnimSet 데이터 에셋이 Monster -> CombatComponent까지 끊김 없이 전달되는지 로그 확인.GetAnimInstance()가 null을 반환하는 타이밍이 있는지 검사.DefaultSlot 설정이 AnimBP 내에서 올바르게 레이어링되어 있는지 확인.데이터 기반 시스템(
AnimSet)은 주입 여부를 빠르게 확인할 수 있는 방어 코드(Guard Clause)와 로그 시스템이 필수적이다.
| 항목 | 핵심 요약 |
|---|---|
| 코딩테스트 | 괄호 회전하기 → Stack 검증 로직의 안정성 확보가 관건 |
| 스폰 시스템 | 실제 레벨 통합 테스트를 통한 환경 변수(네비, 충돌) 제어 |
| 애니메이션 | AnimSet 데이터 파이프라인 및 몽타주 슬롯 레이어링 버그 수정 진행 |