C++(3)
-
[백준] 팩토리얼 0의 개수
https://www.acmicpc.net/problem/1676 처음 구현할 때는 팩토리얼 함수를 짜고 거기서 F(N) / 10 을 하면서 0이 아닌 값을 구할 생각을 했다.하지만 N의 값의 범위가 증가할수록 팩토리얼에서 나오는 수는 자료형에 담을 수 없을 정도로 방대해지기에 계산이 불가능. 그 다음으로 접근한 방법은 N / 5이다.5의 배수가 될 때마다 0의 개수가 늘어나는 것을 발견했고, 이를 이용하고자 했지만 5의 거듭제곱이 나올 때는 0의 개수가 추가로 증가. 조언을 받아 해결한 방법은 각 수가 5의 거듭제곱을 몇 개씩 가지고 있는가를 판별하는 것.수가 증가함에 따른 결과를 계산하는 것이 아니라 해당하는 N에 대해 5의 거듭제곱 즉 500이하인 5, 25, 125를 몇 개씩 소유하고 있는 지..
2024.11.13 -
[Unreal] 언리얼 엔진에서 구조체를 사용할 때
언리얼엔진에서 USTRUCT를 사용하다 독특한 에러를 만났다. C++ 파일을 사용할 때 컴파일 의존성을 최소화 시키기 위해서 헤더파일에서는 class 또는 struct 키워드를 사용하거나 전방선언을 사용하는데 컴파일 에러를 만났다. UFUNCTION() void SpawnPiece(const TSubclassOf piece, const struct FChessDataRow* Row); 다음과 같은 모양으로 함수를 선언했는데 컴파일러가 뒤쪽의 struct 부분에서 아래와 같은 에러를 날렸다. 원래 구조체가 포인터를 이용한 방식이 안되나 싶어서 직접 테스트를 해보았다. //actor.h #pragma once class actor { private: public: actor(); void do_with_st..
2023.02.22 -
[UEChess] 언리얼, 블렌더를 이용한 3D체스 만들기 3. 데이터 테이블을 이용해 체스피스 스폰 장소 및 정보 특정하기
⊙ 이 글은 튜토리얼이나 완벽한 작업물을 기록하는 글이 아닌 스스로의 작업 진행을 기록하기 위한 글이므로 더 나은 방법 더 효율적인 방법이 있을 수 있습니다. 체스피스를 스폰하기 위해 많은 방법을 고민해봤다.처음에는 만들어 낸 StaticMesh 위에 소켓을 생성한 후에 Chessboard의 BeginPlay() 에서 소켓에 Attach하는 방식으로 각 체스 피스들을 만들었다. 처음에는 각 Piece 들의 위치를 특정하고 소켓을 만들었다Black_Pawn_1Black_Rook_2같은 방식으로 말이다.이렇게 만들고 Spawn을 하고 나니 몇 가지 문제가 생겼다. 위치가 약간 바뀔 때마다 모든 소켓을 조정해주어야 하는데, 일괄적인 조정이 힘들어 아주 귀찮다. 이게 중요했는데 Spawn한 후에 각 Piece들..
2023.02.21