본문 바로가기

TIL

[TIL]2024-2-20 / 40일차 - 심화 주차 2일차

1. 오늘의 알고리즘 코드카타 - k번째수

답안 : 

//주의 : commands는 2차원 배열
using System;

public class Solution {
    public int[] solution(int[] array, int[,] commands) {
        //commands를 2차원 배열의 행 갯수만큼 asnswer 배열 초기화
        int[] answer = new int[commands.GetLongLength(0)];
        //GetLongLength = https://learn.microsoft.com/en-us/dotnet/api/system.array.getlonglength?view=net-8.0
        
        //0부터 commands 2차원 배열의 행 갯수까지 반복
        for(int n = 0; n < commands.GetLongLength(0); n++)
        {
            //초기화
            int i = commands[n,0];
            int j = commands[n,1];
            int k = commands[n,2];
        
            //i번째 부터 j번째 까지 자른 배열 저장
            int[] temp = new int[j - i + 1];
        
            //temp 크기 만큼 반복하여 i번째 숫자부터 비교 대입
            for(int a = 0; a < temp.Length; a++)
            {
                temp[a] = array[a+i-1];
            }
        
            //배열 정렬
            Array.Sort(temp);
        
            //k번째 숫자 답에 전달
            answer[n] = temp[k-1];
        }
        return answer;
    }
}

 

사실 다른 답안들을 보니 이보다 훨씬 쉽게 가능한 방법들이 있었다. 다만 내가 모르는 명령어들을 이용했을 뿐이다.


2. 오늘 공부

 

드디어 강의를 다 봤다. 그리고 최종 프로젝트 팀원도 다 구했다.

 

StateMachine의 구현은 많이 어렵지만, 구현하고 나면 장점은 확실히 알 것 같기는 하다.

 

마침 최종 프로젝트에 대한 기획 초안을 끝냈는데 이를 위한 자료에서도 강의에서와 같은 StateMachine의 구조를 짜는 모습을 보여줬다.

 

https://www.youtube.com/watch?v=Bsy8pknHc0M

 

 

이를 가지고 팀원과 이야기 해보았고, 장점과 단점에 대한 토론도 해보았다. 물론 역시나 구현의 어려움이 주요 단점이었지만 말이다.

 

이번 개인 과제는 공부를 하는 시간으로 이용해 보고자 하여 UI강의들도 다시 시청했기에 동적 생성을 집중적으로 해볼 생각이다.

 

우선 씬을 관리하는 SceneManager와 게임 로직을 관리하는 GameManager, 리소스를 관리하는 ResourceManager와 오브젝트 풀을 진행할 PoolManager, 그리고 이 모두를 관리하기 편하게 만들어줄 Manager를 만들어 관리하는 시스템을 구축한 뒤

 

게임의 진행은 UI 공부를 위해 포인트앤클릭으로 UI 동적 생성에 집중해볼 생각이다.

여러모로 몸의 컨디션이 나빠 원하는 만큼 공부의 진도가 안나가고 있어 고민이다.