1️⃣ 알고리즘 코드카타
https://school.programmers.co.kr/learn/courses/30/lessons/131128
[숫자짝궁]
🤖 AI 피드백
1. map 사용으로 인한 비효율성
제한된 숫자 0~9 사이이므로 vector<int>를 사용하는 게 효율적
2. sort 함수로 인한 불필요한 연산
vector를 사용하면 정렬이 필요없음
3. 불필요한 result 벡터 사용
result 벡터에 숫자를 저장한 뒤 문자열로 변환하는 불필요한 과정
#include <string>
#include <vector>
using namespace std;
string solution(string X, string Y) {
string answer = "";
vector<int> countX(10, 0), countY(10, 0);
// 숫자 빈도 계산
for (char c : X) ++countX[c - '0'];
for (char c : Y) ++countY[c - '0'];
// 내림차순으로 결과 생성
for (int i = 9; i >= 0; --i) {
int count = min(countX[i], countY[i]);
answer += string(count, '0' + i);
}
/*
string 예시
string s(5, 'A'); // 결과: "AAAAA"
*/
// 예외 처리
if (answer.empty()) return "-1";
if (answer[0] == '0') return "0";
return answer;
}
💭 회고
이전까지는 for 반복문을 잘 사용하면 문제가 어떻게든 풀리는 느낌이었는데
이제는 자료구조를 어떤 걸 사용해서 효율적으로 풀어야하는지를 생각해야한다는게 와닿는다.
설 선물 C++ 코테 책 오면 알고리즘 잘 봐야겠다..
2️⃣ 장애물 퍼즐 스테이지
💥문제1 : bSweep 충돌
▪️상황
캐릭터가 아닌 폰으로 만든 플레이어의 콜리전을 blockall로 바꿨을 때 block이 안되고 통과됨
▪️해결
bSweep 인자가 false여서 충돌이 무시된 것
AddActorWorldOffset(GetControlRotation().RotateVector(FVector::RightVector) * MoveInput.Y * NomalSpeed, true);
💥문제2 : Tick함수 Super
▪️ 상황
액터의 Tick이 실행되지 않음
▪️ 해결
부모 클래스의 Tick 함수가 없어서 실행이 안 된 것
마찬가지로 컴포넌트 클래스 틱도 컴포넌트를 가지고 있는 Owner의 틱이 없으면 실행 안 됨
헐 이후에도 Tick이 안돼서 찾아봤더니 Super::BeginPlay 빠져서 Tick이 안되었다...
Super::Tick도 아니고 BeginPlay가 없어서 Tick이 실행이 안되는구나...
💭회고
이 공부가 끝날 때쯤..난 자유자재로 언리얼 C++ 코드를 짤 수 있는 거겠지...
열심히 공부해야겠다...
'TIL' 카테고리의 다른 글
[250129 TIL] 드론에 Roll 적용하기(feat 모델링 병합/분리/피봇설정) (0) | 2025.01.29 |
---|---|
[250128 TIL] 폰으로 드론 제작하기 AddActorWorldOffset의 FHitResult (0) | 2025.01.28 |
[250124 TIL] 언리얼5 캐릭터 무브먼트 없이 폰으로 플레이어 만들기 (0) | 2025.01.24 |
[250123 TIL] 코드카타 에라토스테네스의 체 | 언리얼 C++ 게임 루프 설계 (0) | 2025.01.23 |
[2501122 TIL] 언리얼 C++ 애니메이션 연결 및 아이템 구현 (0) | 2025.01.22 |