KDT Unity 5주차 개인 프로젝트 - 2
2023-12-12 TIL
알고리즘 문제
오늘의 알고리즘 문제 : 3진법 뒤집기
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
해결
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System;
public class Solution {
public int solution(int n)
{
char[] charArray = Three(n).ToCharArray();
Array.Reverse(charArray);
string reversedTernary = new string(charArray);
return Ten(reversedTernary);
}
public string Three(int n)
{
string ternary = "";
while (n > 0)
{
int remainder = n % 3;
n /= 3;
ternary = remainder.ToString() + ternary;
}
return ternary;
}
public int Ten(string reversedTernary)
{
int answer = 0;
int power = 0;
for (int i = reversedTernary.Length - 1; i >= 0; i--)
{
int digit = int.Parse(reversedTernary[i].ToString());
answer += digit * (int)Math.Pow(3, power);
power++;
}
return answer;
}
}
어드레서블이란?
이번 프로젝트에 어드레서블을 적용해보기로 하였습니다.
어드레서블이란 무언가를 비동기로 가져오는 방식입니다.
적용
플레이어 캐릭터를 어드레서블로 가져올 것 입니다.
1
2
3
4
5
6
7
8
9
10
11
12
public async void PlayerCreate()
{
// 어드레서블 그룹 이름과 오브젝트 이름을 사용하여 AssetReference 생성
AssetReference assetReference = new AssetReference($"Player");
// 어드레서블 오브젝트를 비동기적으로 인스턴스화
AsyncOperationHandle<GameObject> handle = assetReference.InstantiateAsync(new Vector3(-1, -2, 0), Quaternion.identity);
await handle.Task;
player = handle.Result;
}
이렇게 가져오게 되면 해당 객체는 비동기적으로 해당 오브젝트를 가져오게 됩니다.
async 이란?
어드레서블은 비동기적으로 가져오기 때문에 해당 객체를 가져오는데 시간이 걸립니다.
그로 인하여 해당 객체를 가져오는데 시간이 필요하므로 비동기라는 것을 async으로 나타냅니다.
await 란?
await란 그 뒤에 따르는 함수가 실행이 다 될 때까지 기달린다는 뜻입니다.
비동기때 사용하므로 async와 같이 사용됩니다.
Task는 해당 오브젝트가 다 로드가 되었는지 확인하는 것입니다.
player = handle.Result;은 결국 해당 오브젝트가 다 만들어지고 player에 할당해주는 기능입니다.
오늘의 정리
어드레서블은 아직은 너무 어렵다.
언로드도 생각해야하기 때문에 어려운것이 많다.
하지만 익숙해지면 사용법이 더욱더 무궁무진할거 같다.
This post is licensed under CC BY 4.0 by the author.
