![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnIPIG%2FbtqJDXMABKq%2FxugMdtZOc8128k95vi3GI1%2Fimg.png)
[알고리즘 문제] 29. 3의 개수는? (small)
2020. 9. 26. 23:59
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int n, tmp, d, result = 0; cin >> n; for(int i = 1; i 0) { d = tmp % 10; if (d == 3) ++result; tmp /= 10; } } cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYuVLy%2FbtqJCSd7GzJ%2FjMdcKVy8V0i9WS1z2n34K0%2Fimg.png)
[알고리즘 문제] 28. N!에서 0의 개수
2020. 9. 26. 23:48
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int n, i, j, tmp, t = 0, f = 0; cin >> n; for(i = 2; i
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzJvHi%2FbtqJHaqQnMx%2FBC7wPnnwSBnMsZ4wbWRXU1%2Fimg.png)
[알고리즘 문제] 27. N!의 표현법
2020. 9. 26. 22:55
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main(void) { int n, i, flag, a; cin >> n; vector vInt(n + 1); for (i = n; i >= 1; --i) { a = i; flag = 2; while(true) { if (a % flag == 0) { a = a / flag; vInt[flag]++; } else flag++; if (a == 1) break; } } cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxNqC2%2FbtqJxHRGhxN%2F0CVDHnx3TOaGitHa62enK0%2Fimg.gif)
[TIL] 2020-09-25
2020. 9. 25. 23:40
TIL(Today I Learned)
미니 RPG 커서를 사용하는 법 1. Texture Type이 Sprite인 경우, 일반 UI처럼 직접 관리하는 방법 2. Texture Type을 Cursor로 설정하는 방법 Cursor.SetCursor(사용할 Texture2D, 마우스 기준점 Vector2, CursorMode) CursorMode.Auto: 해당 플랫폼에 맞춰서 CursorMode.ForceSoftware: 소프트웨어용 커서 Ctrl + m + o: 전체 블록 닫기 Ctrl + m + l: 전체 블록 열기 상태 머신보다 코드에서 직접 컨트롤하는 경우가 좋을 때가 있다. Play를 이용해도 되지만, 자연스럽게 전환되길 원한다면 => Animation.CrossFade docs.unity3d.com/kr/530/ScriptRefere..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbumK4P%2FbtqJluSA1Kt%2Fbf5twYdcHfGYrX9mdm3aS1%2Fimg.png)
[TIL] 2020-09-24
2020. 9. 24. 23:09
TIL(Today I Learned)
미니 RPG Light Map Directional Light: 아주 멀리 있으면서 한쪽 방향으로 빛을 쏴 주는 태양 같은 조명이다. "어느 방향"으로 쏘고 있는지가 중요하다. Point Light: "전구" 같은 느낌으로 특정 범위 안에서 빛을 쏴 주는 조명이다. 횃불 등에 사용한다. Spot Light Light - Mode Realtime: 실시간으로 빛을 연산하겠다. => 어마어마한 부하가 일어난다. Mixed: Realtime과 Baked를 반반 섞어서 사용하겠다. Baked: 계산된 파일을 이용해서 빛을 적용하겠다. 움직이는 물체만 연산 처리한다. Inspector창의 Static을 체크하면 해당 오브젝트가 움직이지 않는다고 가정한다. 1. Collider가 있기 때문에, 두 Collider가..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FldsFH%2FbtqJikvTlS7%2FR1YiSObYUnksYHfFriFzw1%2Fimg.png)
[TIL] 2020-09-23
2020. 9. 24. 03:03
TIL(Today I Learned)
Coroutine 길 찾기 등 오래 걸리는 로직이라면 여러 프레임에 거쳐서 처리하는 게 나을 수도 있다. 함수를 일시정지를 했다가 다음 Tick에 해당 작업을 이어서 수행할 수 있게끔 한다. class CoroutineTest : IEnumerable { public IEnumerator GetEnumerator() { yield return 1; yield return 2; yield return 3; yield return 4; } } protected override void Init() { base.Init(); SceneType = Define.Scene.Game; Managers.UI.ShowSceneUI(); CoroutineTest test = new CoroutineTest(); fore..
[TIL] 2020-09-22
2020. 9. 23. 03:38
TIL(Today I Learned)
Object Pooling Pooling할 Object / Pooling하지 않을 Object를 Poolable Component로 구분한다. Pool Manager는 Resource Manager를 보조하는 개념으로써, 기존 Resource Manager의 문제점을 개선해야 한다. public GameObject Instantiate(string path, Transform parent = null) { // 1. original 이미 들고 있으면 바로 사용 GameObject prefab = Load($"Prefabs/{path}"); if (prefab == null) { Debug.Log($"Failed to load prefab: {path}"); return null; } // 2. 혹시 po..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZUNS3%2FbtqJnE0jvKV%2FQslPP6NXNsBEeV7uYt5zn1%2Fimg.png)
[알고리즘 문제] 26. 마라톤
2020. 9. 22. 17:44
문제 풀이/알고리즘 문제풀이
코드 #include #include using namespace std; int main(void) { int n, i, j, num; cin >> n; vector vNum(n); for (i = 0; i > vNum[i]; // 기본값 1, 앞에를 돌면서 num = 1; for (j = 0; j < i; ++j) if (vNum[i]
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7J38x%2FbtqJltY0Nuh%2FeapkBYjYbzmSRztjUU0nt1%2Fimg.png)
[알고리즘 문제] 25. 석차 구하기
2020. 9. 22. 16:54
문제 풀이/알고리즘 문제풀이
코드 #include #include using namespace std; int main(void) { int n, i, j, num = 0; cin >> n; vector vScore(n); vector vResult(n); for (i = 0; i > vScore[i]; vResult[i] = 1; } for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) { if (vScore[i] < vScore[j]) ++vResult[i]; } cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbz7eN5%2FbtqI7w3ta09%2Fsb3xMJDz9oKXZJYDGHmKI0%2Fimg.png)
[TIL] 2020-09-21
2020. 9. 22. 02:57
TIL(Today I Learned)
Scene Manager Scene에서 Scene으로 넘어가려면 Scene 등록을 거쳐야 한다. LoadSceneAsync(): LoadScene을 해 버리면 현재 Scene의 내용을 다 날리고, 다음 Scene을 Load 처리할 텐데, 만약 GameScene의 규모가 큰 경우 한참 기다려야 할 수 있다. Sound Manager MP3 Player => AudioSource MP3 음원 => AudioClip 관객(귀) => AudioListener Audio Listener는 기본적으로 Scene의 메인 카메라에 설정되어 있다. AudioSource의 PlayOneShot()을 이용하면 해당 Audio Clip을 플레이한다. 두세 개가 겹쳐도 그냥 플레이된다. 단, 실행 중 GameObject를 De..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpSeQp%2FbtqI6MS8xfH%2FlbjQoPXHVbZjtn5j5O13ek%2Fimg.png)
[알고리즘 문제] 24. Jolly Jumpers
2020. 9. 21. 20:24
문제 풀이/알고리즘 문제풀이
코드 #include #include using namespace std; int main(void) { int n, i, num, temp; bool result = true; cin >> n; num = n - 1; vector vInt(n);// 5 vector vBool(num);// 1 2 3 4 for (i = 0; i > vInt[i]; } for (i = 0; i < n - 1; ++i) { temp = abs(vInt[i] - vInt[i + 1]); if (temp
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFZDUe%2FbtqI665k4iI%2FVIOtTKdy6WP8PKvdi9r6YK%2Fimg.png)
[알고리즘 문제] 23. 연속 부분 증가수열
2020. 9. 21. 18:16
문제 풀이/알고리즘 문제풀이
코드 #include #include using namespace std; int main(void) { int n, i, temp, prev, count = 1, max = -2147000000; cin >> n; vector vInt; for (i = 0; i > temp; vInt.push_back(temp); } prev = vInt[0]; for (i = 1; i = prev) { count++; if (count > max) max = count; } else count = 1; prev = vInt[i]; } cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx4281%2FbtqJeuw4Btj%2FietssBEqbbP4fKNSO7sTr1%2Fimg.png)
[알고리즘 문제] 22. 온도의 최대값
2020. 9. 21. 17:37
문제 풀이/알고리즘 문제풀이
코드 #include #include #include using namespace std; int main() { int n, k, i, t, sum = 0, max = -2147000000; vector vInt; cin >> n >> k; for (i = 0; i > t; vInt.push_back(t); } for (i = 0; i max) max = sum; } cout
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl9Ywd%2FbtqIZnskCDR%2FMz7BZZaKaXx9DqKAhmvMYk%2Fimg.png)
[TIL] 2020-09-20
2020. 9. 21. 02:56
TIL(Today I Learned)
Button Event Canvas의 Render Mode를 변경하면 다른 방식으로 출력할 수 있다. Screen Space - Overlay는 가상의 카메라가 찍고 있는다고 생각하면 편하다. Button이 눌렸을 때 실행될 함수는 Button의 On Click()에 등록하면 된다. UI 같은 경우, 해당 UI를 눌렀을 때 본인이 아니라 다른 오브젝트(플레이어, 다른 UI 등)를 동작하게끔 구현해야 할 수도 있기 때문에 Object를 선택하는 칸 또한 존재한다. Canvas를 하나의 Prefab으로 저장해서 사용하면 된다. 부모 오브젝트에 사용할 Script를 붙이고, 부모 오브젝트를 Object에 끌어다 놓는다. 그리고 Script 내에서 public으로 선언한 함수를 지정해 주면 된다. UI 버튼을 ..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk3Rxp%2FbtqITvjA4kr%2FO16CknG1Q2KWc5vevkqNM0%2Fimg.gif)
[TIL] 2020-09-17
2020. 9. 17. 23:38
TIL(Today I Learned)
State Machine Jump 시, 위로 올라가는 모션+위에서 허우적대는 모션+아래로 내려오는 모션 이런 식으로 구현할 때 유용하다. Layer는 상하체 분리 애니메이션 등에 응용할 수 있다. 스킬 구현? => 하나씩 state로 만들면 관리하기 어려워진다... 스킬마다 모션이 다른 경우가 대부분이다. 따라서 기본적인 부분은 State Machine으로 만들고, 스킬은 블렌딩처럼 따로 관리하는 경우가 많다. KeyFrame Animation 하늘 위를 나는 새 같은 경우, 해당 나는 모션만 애니메이션 처리를 하는 거지, 게임 월드에서 돌아가는 경로는 따로 지정해 줘야 한다. => 게임에 종속적으로 특정 행동대로 딱 움직이길 원하는 경우. Add Key: 해당 지점에서 변화가 일어날 것이다. 예를 들어..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLVOjK%2FbtqIRNR0kJY%2FTmk9Ge6OkQjrDZpJwwnxFk%2Fimg.gif)
[TIL] 2020-09-16
2020. 9. 16. 23:46
TIL(Today I Learned)
Camera Input Manager에 마우스 처리 기능을 추가한 후, Player Controller에서 화면 클릭 시 해당 좌표로 이동하게끔 구현했다. private void Update() { if(_moveToDest) { // 바닥을 찍었을 때 그쪽으로 감 Vector3 dir = _destPos - transform.position; // 도착했다면 if (dir.magnitude < 0.0001f) { _moveToDest = false; } else { transform.position = transform.position + dir.normalized * _speed * Time.deltaTime; transform.LookAt(_destPos); } } } 이동은 하는데... 무서워졌다..
![thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSdxCo%2FbtqIpvRyGaI%2FV5kYiOZwvrR7I1Wg4O9kXk%2Fimg.png)
[프로그래머스] 레벨 1 - 2016년 (C++)
2020. 9. 10. 13:50
문제 풀이/프로그래머스
문제 설명 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요. 제한사항 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) 입출력 예 a b result 5 24 TUE 코드 #include #include using namespace std; string solution(int a, int b) { i..
[TIL] 2020-09-09
2020. 9. 9. 23:52
TIL(Today I Learned)
LayerMask Raycasting은 무거운 작업이기 때문에 신중하게 사용해야 한다. Mesh Collider를 사용하게 되면 연산 부하가 어마어마해진다. 그래서 복잡한 모델링의 경우, 대략적으로 표현할 수 있는 충돌용 Collider를 만들어서 처리한다. 그러나 오브젝트 개수가 늘어나고, 충돌 체크해야 하는 Collider가 늘어나다 보면 Raycasting 자체도 연산이 무거워질 수밖에 없다. Raycasting의 예제로 살펴봤던 카메라 처리 같은 경우에는 환경 오브젝트만 처리하면 되고, 캐릭터의 이동 및 공격 처리는 바닥을 누르거나 상대 몬스터를 클릭했는지만 처리하면 된다. => Layer Mask 사용! Layer Mask는 Bit Flag를 이용한다. if (Input.GetMouseButto..