전체 글 133

[공부 블로그] DependencyInjector(의존성 주입기)

안녕하세요.오늘은 엔진 심화 교과에서 배운 'DependencyInjector'(이하 DI로 생략)에 대해서 복습 겸 공부 블로그를 작성하게 되었습니다.DI는 유니티에서 컴포넌트 간 결합도를 낮추고 테스트 가능성을 높이기 위해 사용합니다. 예를 들어서 오디오 매니저와 플레이어가 있다고 가정해 봅시다. 플레이어가 걷는 소리를 내기 위해 AudioManager.Instance.PlaySFX(); 로 오디오 매니저의 메서드를 직접 호출하게 되면 이것은 두 클래스 간 강한 결합이 됩니다. 이때 직접 참조를 끊어내기 위해 DI를 사용할 수 있습니다.이제 DependencyInjector 코드를 구현해 보면서 하나씩 설명해 보겠습니다. 우선 커스텀 어트리뷰트인 InjectAttribute, ProvideAttrib..

공부블로그 2026.04.30

[C#] 코드포스 1829E번 문제풀이

문제번호: 1829E문제명: E. The Lakes 문제링크: https://codeforces.com/problemset/problem/1829/E문제내용과 예제 입/출력은 위 문제 링크에서 확인해 주시기 바랍니다 오늘은 BFS를 활용하는 문제를 풀었습니다. NxM 크기의 사각형이 주어질 때, 사각형 내부에서 가장 넓은 부피의 호수 크기를 구하는 문제입니다. 방문하지 않은 지점을 찾아내면 BFS를 활용하여 호수의 넓이를 구하고 최대 부피를 갱신하고 출력해주었습니다. 또한 BFS 탐색 중 각 사분면에 대해서 이동할 수 있도록 정적 dx, dy int형 배열을 선언하여 각각 { 1, -1, 0, 0 }, { 0, 0, 1, -1 }을 넣어주었습니다. 위 dx, dy를 활용해 int nx = x + dx[..

알고리즘 풀이 2026.04.29

[C#] 코드포스 71A번 문제풀이

문제번호: 71A문제명: A. Way Too Long Words문제링크: https://codeforces.com/problemset/problem/71/A문제내용과 예제 입/출력은 위 문제 링크에서 확인해 주시기 바랍니다 안녕하세요. 오늘은 매우 슬프지만 백준 서버가 서비스를 종료한다는 소식을 접하게 되어 미리 알고리즘 풀이 사이트 갈아탈 겸 코드포스 문제를 간단하게 풀어보았습니다. 너무 긴 문자열을 쓰기 귀찮은 주인공이 단어 길이가 10개가 넘어가면 양 끝쪽에 시작문자, 끝 문자를 적고 그 사이에는 양쪽 끝 문자를 제외한 문자의 개수를 다음과 같이 적기로 하였습니다. (10개 이하라면 입력으로 들어온 단어 그대로 출력)s.Length - 2; Console.WriteLine(s[0] + count.T..

알고리즘 풀이 2026.04.18

[C#] 백준 9935번 문제풀이

문제번호: 9935문제명: 뮨자열 폭발문제링크: https://www.acmicpc.net/problem/9935문제내용과 예제 입/출력은 위 문제 링크에서 확인해 주시기 바랍니다오늘은 문자열 폭발이라는 문제를 풀어보았습니다. 주어진 문자열에 폭발 문자열이 포함되어있으면 폭발 문자열은 삭제되고 나머지 문자열은 붙게됩니다. 붙은 문자열이 다시 폭발 문자열을 만들어 연쇄적인 폭발이 일어날 수 있다는 점에 유의해서 코드를 작성해야합니다. 구현은 다음과 같이 했습니다. char형 List를 이용해서 주어진 문자열을 하나씩 List에 담아주는 동시에 List의 크기가 폭발문자열 크기 이상이고 List의 마지막 문자가 폭발 문자열의 마지막 문자와 일치한다면 반복문으로 List는 뒤부터 폭발 문자열이 포함되는지 검사..

알고리즘 풀이 2026.04.14

[C#] 백준 2096번 문제풀이

문제번호: 2096문제명: 내려가기문제링크: https://www.acmicpc.net/problem/2096문제내용과 예제 입/출력은 위 문제 링크에서 확인해 주시기 바랍니다 오늘은 dp문제인 '내려가기' 문제를 풀었습니다. 3개의 숫자로 이루어진 배열이 n줄 주어졌을 때, 바로 위의 숫자를 선택하거나 바로 위 숫자와 바로 인접한 숫자를 선택하며 내려가는 숫자의 최대 합, 최소 합을 구하는 문제입니다.dp[i, j]에서 선택할 수 있는 경우의 수는 바로 위, 위에 인접한 숫자를 선택하는 경우입니다. 이때 i는 3으로 고정된 값이므로dpMax[0, i] = Math.Max(dpMax[0, i - 1], dpMax[1, i - 1]) + NumberPad[0, i]; // 왼쪽dpMax[1, i] = Ma..

알고리즘 풀이 2026.04.12

[C#] 백준 9657번 문제풀이

문제번호: 9657문제명: 돌 게임3문제링크: https://www.acmicpc.net/problem/9657문제내용과 예제 입/출력은 위 문제 링크에서 확인해 주시기 바랍니다오늘은 돌게임 3번째 문제를 풀었습니다. 문제를 풀기 위해 SK과 CY가 이기는 경우를 나열해보았습니다. dp[1] = 1dp[2] = 0dp[3] = 1dp[4] = 1dp[5] = 1dp[6] = 1dp[7] = 0dp[8] = 1dp[9] = 0dp[10] = 1여기서 7로 나누었을때 나머지가 0 또는 2라면 CY가 이기고 아니라면 SK가 이긴다는것을 알 수 있습니다. 이유로는 이전 상태의 조합으로 패턴이 고정되는 '필패상태'가 주기적으로 반복되기 때문입니다.다음은 정답코드입니다.static void Main(){ us..

알고리즘 풀이 2026.04.04

[C#] 백준 1912번 문제풀이

문제번호: 1912문제명: 연속문제링크: https://www.acmicpc.net/problem/1912문제내용과 예제 입/출력은 위 문제 링크에서 확인해 주시기 바랍니다 오늘은 최대 연속 구간합을 구하는 문제를 풀었습니다. 해당 문제의 시간제한부터 살펴보겠습니다.1초 (추가 시간 없음)이네요. 완전탐색(O(n^3))으로 풀기엔 시간이 턱없이 부족하다고 판단했습니다. 그래서 동적할당(dp)로 접근을 시도했습니다. thisSum과 maxSum 변수를 이용해 thisSum = Math.Max(thisSum + arr[k], 0); 으로 자신과 arr[k]을 더한값을 0과 비교하여 값을 할당하고, maxSum = Math.Max(maxSum, thisSum); 으로 최댓값을 할당했습니다. 마지막으로 maxS..

알고리즘 풀이 2026.04.02

[C#] 백준 14911번 문제풀이

문제번호: 14911문제명: 궁합 쌍 찾기문제링크: https://www.acmicpc.net/problem/14911문제내용과 예제 입/출력은 위 문제 링크에서 확인해 주시기 바랍니다 오늘은 '궁합 쌍 찾기' 문제를 풀었습니다. 해시 셋과 브루트포스 알고리즘을 사용하는 문제입니다. 저는 2중 반복문을 돌면서 입력으로 주어진 숫자들을 i, j로 순회했습니다. i+j가 주어진 숫자와 같다면 쌍을 충족하므로 해시 셋에 두 수중 작은 수를 먼저 오게 해서 Item1, Item2로 삽입해주었습니다. 마지막으로 사전순 정렬을 통해 정답을 출력했습니다.다음은 정답코드입니다. static void Main(){ using StreamReader sr = new StreamReader(Console.OpenSta..

알고리즘 풀이 2026.04.01

2025 엔진 팀프로젝트 <미니언1000>

프로젝트 정보[ 엔진 팀프로젝트 1등 수상 🥇 ]대회명: 엔진 팀프로젝트출품작명: 미니언 1000개발기간: 25년 9월 ~ 25년 11월장르: 2D 탑다운 마을운영 시뮬레이션개발인원: 개발 4명역할: 팀장, UI, 과부하/외로움 시스템, 상점 시스템, 도구 시스템, 땅 확장 시스템, 아트프로젝트 소개이번 프로젝트는 엔진교과 팀프로젝트로 진행한 "미니언 1000"이라는 게임입니다. 클래시 오브 클랜, 트롱렛츠(넷플릭스 블랙미러 게임)를 레퍼런스 삼아 개발하였습니다. 미니언들을 번식시키고 건물을 지어 자원을 획득하고, 미니언들에게 먹이를 주고 보살피면서 동시에 적의 침략도 막아내야 합니다. 미니언들의 개체수가 1000개 이상이 되면 엔딩이 나오며 게임을 클리어할 수 있습니다.미니언들의 개체수를 1000마리..

프로젝트 2026.03.31

2025 동아리 팀프로젝트 <배고픈 사람들>

프로젝트 정보[ 동아리 팀프로젝트 3등 수상 🥉 ]대회명: 동아리 팀프로젝트출품작명: 배고픈 사람들개발기간: 25년 11월 ~ 25년 12월 (약 3주)장르: 2D 전투 시뮬레이션개발인원: 개발 6명, 아트 1명역할: 기장(팀장), 정비소 시스템, UI프로젝트 소개이번 프로젝트는 동아리 '빵인'에서 기장 및 팀장을 맡아 개발한 '배고픈 사람들'이라는 게임입니다.이 게임속 세계관은 전 세계 모든 사람들이 식량부족으로 인해 배고픔에 굶주리게 되었고 플레이어(푸드트럭)는 트럭 위에 음식 포탑을 설치해 배고픈 사람들이 트럭을 쫓아오면 배고픈 사람들에게 음식을 쏘아준다는 설정으로 이루어져 있습니다. 배고픈 사람들은 굶주림으로 인해 매우 예민해진 상태임으로 난폭한 폭력적인 성향을 띠기 때문에 해당 게임에서 전략적..

프로젝트 2026.03.29