<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>엘리펀트스튜디오</title>
    <link>https://music-tech.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sat, 9 May 2026 11:33:53 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>솥우</managingEditor>
    <item>
      <title>[6359] 만취한 상범</title>
      <link>https://music-tech.tistory.com/81</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.acmicpc.net/problem/6359&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.acmicpc.net/problem/6359&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제를 읽고 천천히 시뮬레이션 돌리다보니, 한 숫자에 대해 홀수 번 지나가면 문이 열리고, 짝수 번 지나가면 문이 닫힌다는 것을 알았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몇 번 지나가는지를 어떻게 판별할까 생각했을때, 2번, 3번은 반드시 문이 닫히게 되었고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4번부터는 1번,2번,4번이 지나기 때문에문이 열렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 약수의 개수가 홀수개면 문이 열리고, 약수가 짝수개면 문이 닫힌다는 것을 알았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;100번까지 확인한다고 했을때 각 숫자의 약수의 개수를 알아야했기 때문에 for문을 두개 써야했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫번째 for문은 숫자 하나하나가 문이 닫혔는지 열렸는지 확인하는 for문이고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째 for문은 약수의 개수를 확인하기 위한 for문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(테스트 케이스 포함한다면 하면 3개이다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;약수의 개수를 확인하는 알고리즘 중 시간복잡도가 최대한 낮은 로직을 발견해 함수로 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드는 다음과 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1719826585391&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include&amp;lt;iostream&amp;gt; 

using namespace std;

int T;
int n;
int answer;
int cnt;

int factor_odd(int a) 
{
	cnt = 0;

	for (int i = 1; i * i &amp;lt;= a; i++)
	{
		if (i * i == a)
		{
			cnt++;
		}
		else if (a % i == 0)
		{
			cnt += 2;
		}
	}
//	cout &amp;lt;&amp;lt; &quot;cnt:&quot; &amp;lt;&amp;lt; cnt &amp;lt;&amp;lt; &quot;\n&quot;;
	if (cnt&amp;amp;1) return 1;
	else return 0;
}

int  main() {
	cin &amp;gt;&amp;gt; T;
	for (int i = 0; i &amp;lt; T; i++)
	{
		answer = 0;
		cin &amp;gt;&amp;gt; n;
		for (int j = 1; j &amp;lt;= n; j++)
		{
			answer += factor_odd(j);
		}
		
		cout &amp;lt;&amp;lt; answer &amp;lt;&amp;lt; &quot;\n&quot;;
	}
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고한 글&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dnf-lover.tistory.com/entry/C-%EC%95%BD%EC%88%98%EB%A5%BC-%EA%B5%AC%ED%95%98%EB%8A%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%95%BD%EC%88%98%EB%A5%BC-%EA%B5%AC%ED%95%98%EB%8A%94-%EB%8B%A4%EC%96%91%ED%95%9C-%EB%B0%A9%EB%B2%95%EA%B3%BC-%EC%86%8C%EC%9D%B8%EC%88%98%EB%B6%84%ED%95%B4&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://dnf-lover.tistory.com/entry/C-%EC%95%BD%EC%88%98%EB%A5%BC-%EA%B5%AC%ED%95%98%EB%8A%94-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EC%95%BD%EC%88%98%EB%A5%BC-%EA%B5%AC%ED%95%98%EB%8A%94-%EB%8B%A4%EC%96%91%ED%95%9C-%EB%B0%A9%EB%B2%95%EA%B3%BC-%EC%86%8C%EC%9D%B8%EC%88%98%EB%B6%84%ED%95%B4&lt;/a&gt;&lt;/p&gt;</description>
      <category>프로그래밍/알고리즘 문제</category>
      <author>솥우</author>
      <guid isPermaLink="true">https://music-tech.tistory.com/81</guid>
      <comments>https://music-tech.tistory.com/81#entry81comment</comments>
      <pubDate>Mon, 1 Jul 2024 18:40:28 +0900</pubDate>
    </item>
    <item>
      <title>코루틴</title>
      <link>https://music-tech.tistory.com/80</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kakaroo.tistory.com/92&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://kakaroo.tistory.com/92&lt;/a&gt;&lt;/p&gt;</description>
      <author>솥우</author>
      <guid isPermaLink="true">https://music-tech.tistory.com/80</guid>
      <comments>https://music-tech.tistory.com/80#entry80comment</comments>
      <pubDate>Wed, 5 Jun 2024 02:16:01 +0900</pubDate>
    </item>
    <item>
      <title>[UE5/C++] 언리얼에서의 문자열 (TCHAR과 FString)</title>
      <link>https://music-tech.tistory.com/79</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼에서는 Integer과 마찬가지로 String또한 별도의 타입으로 지정해서 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 타입이 바로 TCHAR이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[언리얼에서 별도의 문자열 타입을 사용하는 이유]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;:영어에서 점점 다른 언어들까지 추가로 표현하기 위해 문자체계가 추가되어왔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러다보니 싱글바이트, 멀티바이트, 유니코드 세 종류를 처리해야하는데&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;세 종류 전부다 아직도 사용되고 있으며, 또 C++ STL은 ASCII, UTF-8, UTF16만 지원한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 복잡한 상황을 해결하기 위해 그냥 별도의 문자열타입을 지정한 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼은 내부적으로 모두 UTF-16 (한 문자당 2바이트) 체계를 사용한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스코드 같은 경우는 많이 사용되는 UTF-8이나 디폴트 Windows 인코딩을 추천한다고 하는데, 동아시아 문자같은 경우는 오류를 발생시킬 수도 있다고한다. 그러므로 한글을 쓴다면 사전에 감안하고 에러가 떴을 때 문자 때문은 아닌지 생각해볼 필요도 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TEXT() 매크로는 기본적으로 TCHAR 배열로 저장된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCHAR은 언리얼의 표준 캐릭터 타입이다.&lt;/p&gt;
&lt;pre id=&quot;code_1714035972929&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;TCHAR CharArray[] = TEXT(&quot;Hello, Unreal!&quot;);
UE_LOG(LogTemp, Log, CharArray);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 선언하고, log를 찍어줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문자열을 다양하게 조작하고 싶다면,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TCHAR를 사용하는 것이 아니라, FString 클래스를 사용해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FString은 TCHAR의 동적배열을 소유하고 있는 헬퍼 클래스이다.&lt;/p&gt;
&lt;pre id=&quot;code_1714036141744&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;FString CharString = CharArray;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선언은 위와 같이 TCHAR 문자열을 대입해주면 FString 안쪽에 문자열 데이터가 포함이 된다.&lt;/p&gt;
&lt;pre id=&quot;code_1714036299910&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;UE_LOG(LogTemp, Log, TEXT(&quot;%s&quot;), *CharString);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UE_LOG 매크로의 세번째 파라미터에는 항상 배열이 들어가기 때문에 FString을 쓸 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;%s 에는 포인터어레이가 대응되어야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 FString을 그대로 쓰면 TCHAR 포인터가 반환이 되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 포인터 연산자 *을 붙여주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[FString 클래스 공식문서]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/fstring-in-unreal-engine?application_version=5.1&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/fstring-in-unreal-engine?application_version=5.1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1714036659692&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;언리얼 엔진의 FString&quot; data-og-description=&quot;언리얼 엔진에서 FString 제작, 변환 및 비교를 위한 참고 자료입니다.&quot; data-og-host=&quot;dev.epicgames.com&quot; data-og-source-url=&quot;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/fstring-in-unreal-engine?application_version=5.1&quot; data-og-url=&quot;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/fstring-in-unreal-engine&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cgg7q2/hyVS9gt8iT/MYtJsTll1NGgSFcaKbMMi1/img.png?width=1080&amp;amp;height=540&amp;amp;face=0_0_1080_540,https://scrap.kakaocdn.net/dn/b5oDIF/hyVVCabf8a/Kmjg63PEZxWTA8U6C9HjG0/img.png?width=1080&amp;amp;height=540&amp;amp;face=0_0_1080_540&quot;&gt;&lt;a href=&quot;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/fstring-in-unreal-engine?application_version=5.1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/fstring-in-unreal-engine?application_version=5.1&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cgg7q2/hyVS9gt8iT/MYtJsTll1NGgSFcaKbMMi1/img.png?width=1080&amp;amp;height=540&amp;amp;face=0_0_1080_540,https://scrap.kakaocdn.net/dn/b5oDIF/hyVVCabf8a/Kmjg63PEZxWTA8U6C9HjG0/img.png?width=1080&amp;amp;height=540&amp;amp;face=0_0_1080_540');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 엔진의 FString&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 엔진에서 FString 제작, 변환 및 비교를 위한 참고 자료입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dev.epicgames.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>솥우</author>
      <guid isPermaLink="true">https://music-tech.tistory.com/79</guid>
      <comments>https://music-tech.tistory.com/79#entry79comment</comments>
      <pubDate>Thu, 25 Apr 2024 18:20:50 +0900</pubDate>
    </item>
    <item>
      <title>[UE5] 언리얼엔진 사양 낮추기 (그래픽 수준 낮음)</title>
      <link>https://music-tech.tistory.com/78</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.naver.com/4roring/221000186202&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://blog.naver.com/4roring/221000186202&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1713934686838&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;노트북에서 언리얼 엔진 조금이라도 가볍게 사용하자!&quot; data-og-description=&quot;제가 메인컴이 노트북이다 보니&amp;nbsp;언리얼 엔진을 사용할 때 마다&amp;nbsp;노트북이 고통을 호소하면서&amp;nbsp;...&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://blog.naver.com/4roring/221000186202&quot; data-og-url=&quot;https://blog.naver.com/4roring/221000186202&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/vojD4/hyVVMp8E4m/23nqIbRgjKRUn1E9LYkTuK/img.png?width=470&amp;amp;height=549&amp;amp;face=0_0_470_549&quot;&gt;&lt;a href=&quot;https://blog.naver.com/4roring/221000186202&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.naver.com/4roring/221000186202&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/vojD4/hyVVMp8E4m/23nqIbRgjKRUn1E9LYkTuK/img.png?width=470&amp;amp;height=549&amp;amp;face=0_0_470_549');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;노트북에서 언리얼 엔진 조금이라도 가볍게 사용하자!&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;제가 메인컴이 노트북이다 보니&amp;nbsp;언리얼 엔진을 사용할 때 마다&amp;nbsp;노트북이 고통을 호소하면서&amp;nbsp;...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 게시글 참고해서 사양 낮추면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 엔진 퀄리티 낮음으로 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 고정된 프레임 레이트 30으로 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 라이트 끄기.&lt;/p&gt;</description>
      <category>프로그래밍/UE5</category>
      <author>솥우</author>
      <guid isPermaLink="true">https://music-tech.tistory.com/78</guid>
      <comments>https://music-tech.tistory.com/78#entry78comment</comments>
      <pubDate>Wed, 24 Apr 2024 13:58:40 +0900</pubDate>
    </item>
    <item>
      <title>[UE5/C++] 캐릭터 인코딩</title>
      <link>https://music-tech.tistory.com/77</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/character-encoding-in-unreal-engine?application_version=5.1&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/character-encoding-in-unreal-engine?application_version=5.1&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1713801516541&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;언리얼 엔진의 캐릭터 인코딩&quot; data-og-description=&quot;언리얼 엔진에 사용되는 캐릭터 인코딩을 검토합니다.&quot; data-og-host=&quot;dev.epicgames.com&quot; data-og-source-url=&quot;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/character-encoding-in-unreal-engine?application_version=5.1&quot; data-og-url=&quot;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/character-encoding-in-unreal-engine&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/P8qip/hyVVIntFQT/jre6nR8SPD35AQ2rTkue00/img.png?width=1080&amp;amp;height=540&amp;amp;face=0_0_1080_540,https://scrap.kakaocdn.net/dn/cg0yW4/hyVVJUdU4k/DgjY70XsVqiEata2jQfxoK/img.png?width=1080&amp;amp;height=540&amp;amp;face=0_0_1080_540&quot;&gt;&lt;a href=&quot;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/character-encoding-in-unreal-engine?application_version=5.1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dev.epicgames.com/documentation/ko-kr/unreal-engine/character-encoding-in-unreal-engine?application_version=5.1&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/P8qip/hyVVIntFQT/jre6nR8SPD35AQ2rTkue00/img.png?width=1080&amp;amp;height=540&amp;amp;face=0_0_1080_540,https://scrap.kakaocdn.net/dn/cg0yW4/hyVVJUdU4k/DgjY70XsVqiEata2jQfxoK/img.png?width=1080&amp;amp;height=540&amp;amp;face=0_0_1080_540');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 엔진의 캐릭터 인코딩&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 엔진에 사용되는 캐릭터 인코딩을 검토합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dev.epicgames.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/UE5</category>
      <author>솥우</author>
      <guid isPermaLink="true">https://music-tech.tistory.com/77</guid>
      <comments>https://music-tech.tistory.com/77#entry77comment</comments>
      <pubDate>Tue, 23 Apr 2024 01:23:10 +0900</pubDate>
    </item>
    <item>
      <title>[UE5/C++] 언리얼의 기본타입</title>
      <link>https://music-tech.tistory.com/76</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼은 C++의 기본타입을 사용하지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C++은 최신규약에서 int형은 최소 32비트를 보장하도록 규정되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 되면 어떤 플랫폼에서는 64비트로 해석될 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 int형의 크기를 확신할 수 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애매한 크키규정은 최대 퍼포먼스를 뽑아내야하는 게임 제작에 있어서 이것은 영향을 미칠 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 문제로 언리얼은 자체적으로 기본타입을 만들어서 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1293&quot; data-origin-height=&quot;879&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNtYUp/btsGRAFeQwV/CpFbdKAuwcLeO7mpRYPavk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNtYUp/btsGRAFeQwV/CpFbdKAuwcLeO7mpRYPavk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNtYUp/btsGRAFeQwV/CpFbdKAuwcLeO7mpRYPavk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNtYUp%2FbtsGRAFeQwV%2FCpFbdKAuwcLeO7mpRYPavk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1293&quot; height=&quot;879&quot; data-origin-width=&quot;1293&quot; data-origin-height=&quot;879&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;float와 double은 국제표준으로 정해져있기 때문에 float32 이런식으로 지정없이 그냥 사용하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;bool 타입은 크기가 명확하지 않음.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클래스 헤더의 멤버변수, 데이터를 저장하는데 사용되는 헤더파일 같은 헤더파일에는 bool이라는 데이터타입을 사용하지 않고 대신 바이트정보를 사용한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참과 거짓을 저장하는데 바이트를 사용하면 데이터 양이 많기 때문에 Bit Field라는 오페레이터를 사용해서 데이터 크기를 제한시킬 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반 uint8과 구분하기 위해서 접두사 b를 사용한다.&lt;/p&gt;
&lt;pre id=&quot;code_1713801304808&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;UPROPETY()
uint8 bBoolen:1;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 cpp파일에서 로직을 구현할때는 자유롭게 bool타입을 사용해도 된다.&lt;/p&gt;</description>
      <category>프로그래밍/UE5</category>
      <author>솥우</author>
      <guid isPermaLink="true">https://music-tech.tistory.com/76</guid>
      <comments>https://music-tech.tistory.com/76#entry76comment</comments>
      <pubDate>Tue, 23 Apr 2024 00:56:25 +0900</pubDate>
    </item>
    <item>
      <title>[UE5/C++] 새 Game Instance 만들기</title>
      <link>https://music-tech.tistory.com/75</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Game Instance 클래스는 게임의 기본적인 뼈대가 되는 클래스라고 보면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나도 처음에는 이해가 잘 안갔는데, 유니티의 Gam Manager와 비슷하다고 보면 될 것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Game Instance 클래스는 싱글톤으로, 게임 하나당 하나만 존재해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디폴트 Game Instance가 아닌 새로운 Game Instance를 만들어 적용시켜보기까지가 이번 글에서 할 일이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;새 Game Instance 클래스 만드는 방법&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tools &amp;rarr; New C++ Class &amp;rarr; All Classes &amp;rarr; Game Instance 검색 후 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이름을 입력하고 Create를 누르면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 후 자동으로 상속받은 클래스에 대한 정보들을 파악해서 컴파일이 되고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에디터에서 솔루션 구조도 이에 맞춰서 자동으로 바뀐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비주얼 스튜디오에서 뜨는 팝업창의 Reload All을 눌러주면 알아서 바뀐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존의 GameInstance 클래스가 가지고있는 함수 중 중요한 함수가 Init()이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Init()은 게임을 시작하기 전 초기화해주는 함수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 Init()을 오버라이딩해서 재구성을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 언리얼엔진의 부모클래스를 상속 받아서 재구성을 하는 경우 언리얼엔진에 있는 코드를 한번 실행해주는 것이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 그 코드들은 전체 플로우가 동작할 수 있게 짜여져 있기 때문에, 이것을 무시하고 오버라이딩 해버리면 엔진 전체적인 플로우에 어떤 에러가 발생할지 모른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼엔진에서는 부모 클래스 이름을 다 칠 필요 없이&amp;nbsp; Super로 호출 할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1713799766307&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Super::Init();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 후 추가할 로직을 적어주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[게임모드 vs 게임인스턴스]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=0pAhqA2Sgto&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=0pAhqA2Sgto&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=0pAhqA2Sgto&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/eeHtqc/hyVS8uAFsQ/JlDkD4jpnglkJA6fLSTx2K/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;UE5 GameMode vs GameInstance Explained&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/0pAhqA2Sgto&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/UE5</category>
      <author>솥우</author>
      <guid isPermaLink="true">https://music-tech.tistory.com/75</guid>
      <comments>https://music-tech.tistory.com/75#entry75comment</comments>
      <pubDate>Tue, 23 Apr 2024 00:29:49 +0900</pubDate>
    </item>
    <item>
      <title>[UE5/C++] 언리얼엔진 C++에서 print 하기 (LOG_UE)</title>
      <link>https://music-tech.tistory.com/74</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;콘솔창에 출력하는 함수는 각 언어마다 이름이 다르다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;C++에서는 cout을 많이 쓰고, C#에서는 Log.Debug를 쓴다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;언리얼 C++에서는 LOG_UE를 쓴다.&lt;/p&gt;
&lt;pre id=&quot;code_1713796003778&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;LOG_UE(로그 카테고리, 로그 수준, 출력 내용)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그 카테고리: 필터링 등에 쓰일 카테고리를 적어주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그 수준&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Log: 일반적인 로그&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Wanring: 경고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Error: 에러&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수준에 따라 다른 색상으로 표현된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출력 내용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼에서는 스트링을 출력할때 큰 따옴표로 표현하기 보다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TEXT(&quot; ... &quot;)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;텍스트 매크로로 써주는게 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유니코드 같은 문자들을 통일되게 다루기 위해 웬만하면 텍스트로 써주는 게 편하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>프로그래밍/UE5</category>
      <author>솥우</author>
      <guid isPermaLink="true">https://music-tech.tistory.com/74</guid>
      <comments>https://music-tech.tistory.com/74#entry74comment</comments>
      <pubDate>Mon, 22 Apr 2024 23:31:17 +0900</pubDate>
    </item>
    <item>
      <title>AR Foundation 카메라 안되는 현상. (URP 사용시 발생하는 문제)</title>
      <link>https://music-tech.tistory.com/73</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://forum.unity.com/threads/black-screen-unity-ar-camera-not-working.905972/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://forum.unity.com/threads/black-screen-unity-ar-camera-not-working.905972/&lt;/a&gt;&lt;/p&gt;</description>
      <category>한양대ERICA | ICT융합학부/4학년 | 가상 인터페이스 디자인</category>
      <author>솥우</author>
      <guid isPermaLink="true">https://music-tech.tistory.com/73</guid>
      <comments>https://music-tech.tistory.com/73#entry73comment</comments>
      <pubDate>Sun, 21 Apr 2024 23:56:01 +0900</pubDate>
    </item>
    <item>
      <title>[UE5/C++] 언리얼엔진 컴파일 하는 방법</title>
      <link>https://music-tech.tistory.com/72</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;언리얼을 C++로 하면 당연하게도 컴파일을 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴파일 할 때 두가지 방법이 있는데 여기에 약간의 규칙이 있는 듯 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 비주얼 스튜디오에서 컴파일을 하든가, 라이브 코딩으로 컴파일을 하는 두 가지 방법이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 헤더파일을 수정했다면 &lt;b&gt;에디터를 끄고&lt;/b&gt;, 비주얼스튜디오에서 컴파일을 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스 파일만 수정했다면 라이브 코딩으로 컴파일 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 라이브 코딩 단축키는 Ctrl + Alt + F11&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가적으로, 비주얼스튜디오에서 수동으로 클래스를 추가하면 안된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 클래스는 언리얼엔진 내에서 추가해야한다.&lt;/p&gt;</description>
      <category>프로그래밍/UE5</category>
      <author>솥우</author>
      <guid isPermaLink="true">https://music-tech.tistory.com/72</guid>
      <comments>https://music-tech.tistory.com/72#entry72comment</comments>
      <pubDate>Thu, 28 Mar 2024 00:37:37 +0900</pubDate>
    </item>
  </channel>
</rss>