전체 글

문제 설명4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다.한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다.만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다.X와 Y 모두 올바른 괄호열이라면 이들을 결합한 XY도 올바른 괄호열이 된다.예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()()[]’ 은 모두 올바른 괄호열이 아니다. 우리는 어떤 올바른 괄호열 X에 대하여 그 괄호열의 값(괄호값)을 아래와 같이 정의하고 값(X)로 표시한다.‘()’ 인 괄호열의 값은 2이다.‘[]’ 인 괄호열의 값은 3이다.‘(X)’ 의 괄호값은 2×값(X) 으..
종속성 분석 툴 제작 종속성 분석이 끝난 노드를 보기 좋게 그리는 작업을 해보자.종속성의 계층 구조 및 흐름을 보기 좋게 트리 형식으로 그리며 사이클이 판정되면 해당 사이클의 연결선은 빨간색으로 표시해 보자.     데이터 저장을 위한 구조 변경 종속성 분석이 완료된 상태이니 노드를 보기 좋게 배치하는 작업이 필요하다.여러 시도를 해봤지만 선택한 노드를 중앙에 배치하고 방사형으로 퍼져 나가는 그림이 가장 보기 좋았다.그렇기 때문에 종속성을 depth를 기준으로 표현해야 한다.struct를 통해 이를 표현해 보자.public class AssetNode{ public string Path; // 에셋 경로 public int Depth; ..
문제 설명문자열과 놀기를 세상에서 제일 좋아하는 영식이는 오늘도 문자열 2개의 LCS(Longest Common Subsequence)를 구하고 있었다. 어느 날 영식이는 조교들이 문자열 3개의 LCS를 구하는 것을 보았다. 영식이도 도전해 보았지만 실패하고 말았다.이제 우리가 할 일은 다음과 같다. 영식이를 도와서 문자열 3개의 LCS를 구하는 프로그램을 작성하라.https://www.acmicpc.net/problem/1958      제한 사항      풀이문제를 요약하면, 3개의 문자열의 lcs를 구하는 것이다. 해당 문제는 2개의 문자열의 lcs를 구하는 것을 확장시키는 문제이다.그럼 2개의 문자열의 lcs를 구하는 방법을 알아보자.2개의 문자열의 lcs를 구하는 방법은 두 문자열의 요소를 하나..
문제 설명Elly는 예상치 못하게 프로그래밍 대회를 준비하는 학생들을 가르칠 위기에 처했다. 대회는 정확히 3명으로 구성된 팀만 참가가 가능하다. 그러나 그녀가 가르칠 학생들에게는 큰 문제가 있었다. 코딩 실력이 좋으면 팀워크가 떨어지고, 팀워크가 좋을수록 코딩 실력이 떨어진다. 그리고 출전하고자 하는 대회는 코딩 실력과 팀워크 모두가 중요하다.Elly는 그녀가 가르칠 수 있는 모든 학생들의 코딩 실력을 알고 있다. 각각의 코딩 실력 Ai는 -10000부터 10000 사이의 정수로 표시되어 있다. 그녀는 팀워크와 코딩 실력이 모두 적절한 팀을 만들기 위해, 세 팀원의 코딩 실력의 합이 0이 되는 팀을 만들고자 한다. 이러한 조건 하에, 그녀가 대회에 출전할 수 있는 팀을 얼마나 많이 만들 수 있는지를 계..
· Game/Unity
종속성 분석 툴 제작이제 마지막으로 종속성을 분석하고 그래프를 그리는 작업을 해보자.     종속성 분석종속성을 분석하는 방법은 여러 가지이다.AssetDatabase.GetDependencies()스크립트 분석어셈블리 분석 GetDependencies의 경우에는 meta파일을 읽어 GUID를 통해 종속성을 분석한다.프리팹 안에 또 다른 프리팹이 포함되어 있거나 이를 참조하는 등 파일 간의 종속성을 파악하는 데는 효과적이다.하지만, 일반적인 C#클래스같은 Type형태의 클래스에 대해서는 참조를 계산하지 못할 수 있다.따라서, GetDependencies를 통해 간편하게 참조를 확인할 수 있는 에셋에 대해서는 GetDependencies를 진행하고 스크립트처럼 다르게 처리해야 하는 에셋들을 분류하여 종속성..
문제 설명어느 날, 전설 속에 전해 내려오는 비밀 주문서가 세상에 다시 모습을 드러냈습니다. 이 주문서에는 마법 세계에서 사용되는 모든 주문이 적혀 있는데, 각 주문은 알파벳 소문자 11글자 이하로 구성되어 있습니다. 주문서에는 실제로 마법적 효과를 지니지 않는 의미 없는 주문들 즉, 알파벳 소문자 11글자 이하로 쓸 수 있는 모든 문자열이 고대의 규칙에 따라 아래와 같이 정렬되어 있습니다.글자 수가 적은 주문부터 먼저 기록된다.글자 수가 같다면, 사전 순서대로 기록된다. 예를 들어, 주문서의 시작 부분은 다음과 같이 구성됩니다."a"→"b"→"c"→"d"→"e"→"f"→...→"z"→"aa"→"ab"→...→"az"→"ba"→...→"by"→"bz"→"ca"→...→"zz"→"aaa"→"aab"→.....
· Game/Unity
종속성 분석 툴 제작종속성 분석 툴 제작 - 1이전 포스팅에서 툴의 외형을 그리는 것까지는 완료하였다.이번에는 UI에 기능을 추가하여 그래프를 그리는 것까지 해보자.     컨트롤 패널 기능우선 선택된 에셋에 에셋을 등록하는 것을 구현해 보자.private void InitializeAssetList(){ assetList = new ReorderableList(selectedAssets, typeof(string), true, true, true, true); // 헤더 설정 assetList.drawHeaderCallback = (Rect rect) => { EditorGUI.LabelField(rect, "선택된 에셋"); }; // 요소 그리기 ass..
hvv_an
이미난