TIL

[250127 TIL] 장애물 퍼즐 스테이지 상속 받은 Tick의 Super는 필수!

yoosorang 2025. 1. 27. 21:02

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++ 코드를 짤 수 있는 거겠지...
열심히 공부해야겠다...