본문 바로가기
[Algorithm] 백준 17114 하이퍼토마토 - 구데기같지 않은 풀이 (C++) https://www.acmicpc.net/problem/17114 구데기컵에 출제된 문제입니다. 구데기같이 11중 반복문과 BFS를 통해서 풀 수 있습니다. (물론 그게 아주 정상적인 방법입니다.) 하지만 차원 확장에 대해 조금 더 생각해보면 규칙을 발견할 수 있고, 11차원 뿐만 아니라 자연수 n에 대해 일반적으로 답을 낼 수 있습니다. 코드도 아주 짧아져서 숏코딩에 도전할 수도 있죠. 이 글에서는 제가 며칠 동안 삽질하면서 발견한 꽤 아름다운(?) 풀이를 설명하려 합니다. 관련 지식은 BFS만 알고 계시면 됩니다만, 꽤 인내심이 필요할 것 같습니다. 제가 부족한 탓에 쉽게 설명을 못하겠더라구요. 1. 토마토 배열을 일차원으로 표현 2차원(평면)은 1차원(선)을 모아놓은 것이고, 3차원은 2차원을 모.. 2022. 6. 14.
[Unity] Animation 에셋을 관리하는 특이한 방법 : Animation Clip into Animator Controller 2021.2.15f apple silicon 버전 기준으로 작성되었습니다. 0. 글을 읽기 전 알아두기 유니티 버튼 애니메이션 Transition - Animation 유니티 버튼 애니메이션 Transition - Animation 버튼 눌렸을때 애니메이션 만들기 Button Script의 T... blog.naver.com [에디터 확장 입문] 번역 26장 AssetDatabase http://anchan828.github.io/editor-manual/web/asset_database.html26장 AssetDatabase AssetDatabase... blog.naver.com 이 글에서는 Animation Clip을 Animation Controller 하위에 위치시키도록 하는 방법을 소개합니다... 2022. 4. 8.
[Unity] 유지보수성과 성능을 모두 챙기는 방법 - 데이터 변경에 따른 콜백과 MVC 분리 0. 개요 데이터가 변경됨에 따라 특정 작업을 수행해야 하는 경우가 있습니다. 예를 들면 HP 값이 변경될 때, 동시에 UI를 갱신해야 하는 경우가 있을 텐데, 이 때 UI를 관리하는 클래스에서 Update()를 통해 HP 데이터를 가진 클래스를 참조하여 HP 값을 매 프레임마다 계속 관찰하면서 UI를 갱신할 수도 있지만, 이는 성능 상 좋지 않다는 것을 모두 알 것입니다. 대신에 HP가 변경되는 시점에만 UI 갱신 작업을 수행하도록 하면 성능을 높이고 코드의 유지보수성도 향상시킬 수 있습니다. 이 글에서는 C#의 delegate를 이용하여 데이터 변경에 대한 이벤트 등록/발생을 쉽게 구현하고, 더 나아가 이를 통해 유니티에서 MVC를 바람직하게 분리할 수 있음을, 또한 그 MVC 각각을 Scene의 h.. 2022. 3. 22.
[C#] 중복 없는 랜덤 중복 없이 랜덤 숫자나 객체를 뽑는 알고리즘을 생각해보면, 간단하게 이미 뽑은 숫자를 뽑은 경우에 랜덤을 다시 돌리는 방법을 생각해 볼 수 있습니다.  구글링 해보면 많이 나오는 방법이기도 하죠. 다음은 그 방법을 이용해서 0에서 (N-1)까지의 숫자를 랜덤으로 뽑는 프로그램입니다.using System;using System.Linq; // 배열 초기화 - Enumerable 사용static void Main(string[] args){ Random random = new Random(); int N = Convert.ToInt32(Console.ReadLine()); bool[] selected = Enumerable.Repeat(false, N).ToArray(); in.. 2022. 2. 26.
[Unity] AR Tracking Correction 이 글에서는 AR 트래킹이 튀어서 오브젝트들이 지맘대로 순간이동하는 괴현상을 고치는 것에 대해 얘기할 것입니다. 해커톤에서 재난대피훈련 AR 앱을 만들 때였습니다. 분명 이론적으로는 완벽한(적어도 제 기준에서는) 로직으로 코드를 짰는데, 자꾸 AR Camera 오브젝트의 position 값이 말도 안되는 값으로 변경되는 괴현상이 발생했습니다. 1. Handling position 일단 AR 카메라(플레이어)의 위치를 다루는 법에 대해서 알아봅시다. 1) AR Session Origin : AR 세계의 원점. AR 카메라 오브젝트는 이 오브젝트에 귀속되므로 이 오브젝트의 Transform은 자식 오브젝트인 AR 카메라 오브젝트의 Transform에 영향을 준다. (AR Session과는 다릅니다. AR S.. 2021. 1. 28.
[Unity] 멀티플랫폼 터치를 통한 3인칭 이동/카메라회전 여러 플랫폼에서 동시에 쓰일 수 있는 터치/클릭/드래그 를 통한 이동 및 회전에 대해 다루려 합니다. 옛날에 제가 이벤트, 인터페이스 등의 개념을 몰랐을 때는, 그리고 구글링을 더 못했던 시절에는 플랫폼에 종속되는 코드를 짰었습니다. 그래서 안드로이드 터치를 테스트하기 위해서는 반드시 빌드를 하는 번거로움이 있었죠. 하지만 멀티플랫폼에 대응되도록 유니티에서 지원해주는 기능을 이용하면 그런 번거로움을 해소할 수 있습니다. 이 글에는 어떤 코드를 짤 때, 제가 어떤 생각을 했는지, 어떤 식으로 코드를 구성했는지 등에 대한 이야기도 자세하게 적어 놓았습니다. 욕 할 만한 부분이 있다면 제 성장을 위해 가차없이 욕해주시길 바랍니다. 0. 결과물 작업결과부터 보여주자면, 이런걸 만들어볼 생각입니다. 모두 기초적인.. 2020. 12. 16.