본문 바로가기

TIL

[TIL]2024-4-03 / 63일차 - 최종 프로젝트 5주차 3일차

1. 오늘의 알고리즘 코드카타 - 대충 만든 자판

 

답안 :

using System;
using System.Collections.Generic;

public class Solution {
    public int[] solution(string[] keymap, string[] targets) 
    {
        var dict = new Dictionary<char, int>();
        for(int i = 0; i < keymap.Length; i++)
        {
            string keyStr = keymap[i];
            for(int k = 0; k < keyStr.Length; k++)
            {
                char c = keyStr[k];
                dict[c] = dict.ContainsKey(c) ? Math.Min(k, dict[c]) : k;
            }
        }

        // dictionary에서 검색 후 출력
        int[] answer = new int[targets.Length];
        for(int i = 0; i < targets.Length; i++)
        {
            string targetStr = targets[i];
            for(int k = 0; k < targetStr.Length; k++)
            {
                if(!dict.TryGetValue(targetStr[k], out int index))
                {
                    answer[i] = -1;
                    break;
                }

                answer[i] += index + 1;
            }
        }

        return answer;
    }
}

 

다른 사람들 답안 <더 간략함> = 

 

public class Solution {
    public int[] solution(string[] keymap, string[] targets) {
        int[] answer = new int[targets.Length];
        int sum = 0;
        int count = 0;
        
        for(int i = 0; i < targets.Length; i++)
        {
            for(int j = 0; j < targets[i].Length; j++)
            {
                count = press(keymap, targets[i][j]);
                if(count == -1)
                {
                    sum = -1;
                    break;
                }
                sum += count;
            }
            answer[i] = sum;
            sum = 0;
        }
        return answer;
    }
    
    public int press(string[] keymap, char ch)
    {
        int min = -1;
        
        for(int i = 0; i < keymap.Length; i++)
        {
            for(int j = 0; j < keymap[i].Length; j++)
            {
                if(keymap[i][j] == ch)
                {
                    if(min == -1)   min = j + 1;
                    else if(min > j)    min = j + 1;
                    break;
                }
            }
        }
        return min;
    }
}

 


2. 오늘의 기술 면접 - 값 형식과 참조 형식의 차이에 대해 설명해주세요.

 

값 형식의 경우 자료형 int / float 등이나 구조체 struct 등으로 나타나며 데이터가 스택 영역에 저장되고
참조형은 string, 클래스, 델리게이트나 인터페이스 등으로 나타나며
동적 메모리로서 힙 영역에 저장되어 스택 메모리에 힙 메모리의 주소를 저장하게 됩니다.

 


 

3. 오늘의 작업물

 

새로운 캐릭터 스폰/리스폰 포인트를 만들어 주었다. 하수구 구멍에서 나오는 듯한, 묘하게 막 다뤄지는 실험체 캐릭터들의 처우를 보여주는 느낌으로 하였다.

 

 

 

 

 

 

팀원이 베이스를 만들어 둔 화살 트랩에 스프라이트를 추가하고 추가적인 작업을 하였다.

 

 

플레이어를 추적하고 발사-재장전의 루틴을 가진다.

 

 

 

 

 

팀원이 베이스를 만들어둔 화염방사기의 오브젝트 스프라이트와 화염방사 이펙트 쉐이더를 만들었다. 

 

 

아직 발사 초입 부분에서 살짝 어색함이 보여 나중에 시간이 되면 추가적인 수정을 할 것 같다.

 

 

 

 

 

 

옛날에 만들어둔 레이저 발사기에 스프라이트를 추가해줬다.