본문 바로가기

TIL

[TIL]2024-2-29 / 47일차 - 심화 팀플 4일차

1.오늘의 알고리즘 코드카타 -  카드 뭉치

 

답안 :

//복잡하게 생각해서 찾아보니 매우 간단했다.
public class Solution {
    public string solution(string[] cards1, string[] cards2, string[] goal) {
        string answer = "Yes";
        int index1 = 0;
        int index2 = 0;
        
        for(int i = 0; i < goal.Length; i++)
        {
            if(index1 < cards1.Length && goal[i] == cards1[index1])
            {
                index1++;
                continue;
            }
            else if(index2 < cards2.Length && goal[i] == cards2[index2])
            {
                index2++;
                continue;
            }
            else
            {
                return "No";
            }         
        }
        
        return answer;
    }
}

2. 오늘 작업 및 공부

 

오늘의 특강은 기술 면접에 관한 내용이었다.

사실 공부의 방향과 목표를 정하는 데에 있어서는 매우 중요한 내용인 부분이다.

 

제일 기억에 남는 것이 자주 나오는 질문 중 우리 수준에서 대답해야 했던 것들.

생각보다 설명하라니까 말로 정리가 안돼서 내가 질문을 받았다면 많이 절었을 것 같아 여기도 정리해두려고 한다.

 

자주 출몰 하는 기술 면접 질문

  • 오버로딩 과 오버라이딩의 차이
  • Struct 와 Class 의 차이
    • Struct는 값(Value) 타입이며, Class는 참조(Reference) 타입입니다.
      • Struct: 값(Value) 그 자체를 가지고 있으며, 변수에 값이 할당될 때 복사됩니다. 메모리에서 스택(Stack)에 저장됩니다.
      • Class: 객체의 참조(Reference)가 변수에 할당되며, 변수는 실제 객체가 저장된 메모리 주소를 가리킵니다. 메모리에서 힙(Heap)에 저장됩니다.
    • Struct는 복사된 각 값이 서로 독립적이고 변경되어도 다른 변수에 영향을 주지 않습니다. 반면에 Class는 같은 객체를 가리키는 여러 변수가 있을 때 하나를 변경하면 다른 변수도 변경됩니다.
  • ref와 out 차이 : out은 초기화할 필요가 없고, 이전 값은 모두 무시됨
  • ref는 사용하기 전 초기화
  • 박싱과 언박싱의 차이
    • 박싱(Boxing): 값 타입(스택)을 레퍼런스 타입(힙)으로 변환하는 과정입니다. 예를 들어, int와 같은 값 타입을 object와 같은 레퍼런스 타입으로 변환하는 것입니다. 이 과정에서는 스택에 저장된 값을 힙으로 복사하고, 이를 가리키는 레퍼런스가 생성됩니다.
    • 언박싱(Unboxing): 레퍼런스 타입(힙)을 값 타입(스택)으로 변환하는 과정입니다. 예를 들어, object와 같은 레퍼런스 타입을 int와 같은 값 타입으로 변환하는 것입니다. 이 과정에서는 힙에 저장된 데이터를 스택으로 복사하게 되며, 이로 인해 가비지가 쌓일 수 있습니다.
    • 예시:
      • 박싱(Boxing):
      • int value = 10; // 값 타입 변수 object boxedValue = value; // 박싱: 값 타입을 레퍼런스 타입으로 변환
      • 언박싱(Unboxing):
      • object boxedValue = 10; // 레퍼런스 타입 변수 int unboxedValue = (int)boxedValue; // 언박싱: 레퍼런스 타입을 값 타입으로 변환
  • 제너릭 컬렉션 중 어떤 것을 가장 많이 사용했고 그 이유는?
    1. 가장 많이 사용한 제너릭 컬렉션 소개: 가장 자주 사용한 제너릭 컬렉션을 언급합니다. 예를 들어, List, Dictionary, HashSet 등을 언급할 수 있습니다.
    2. 사용한 이유 설명:
      • 적합성: 선택한 제너릭 컬렉션이 사용한 상황에 가장 적합했던 이유를 설명합니다. 예를 들어, List는 순차적인 데이터 접근이 필요한 경우에 유용하며, Dictionary는 키-값 쌍의 관계를 효율적으로 관리할 때 사용될 수 있습니다.
      • 효율성: 선택한 제너릭 컬렉션이 데이터를 효율적으로 저장하고 접근할 수 있는 구조를 가지고 있었던 이유를 언급합니다. 이는 알고리즘의 시간 복잡도와 관련하여 설명할 수 있습니다.
      • 확장성: 선택한 제너릭 컬렉션이 데이터를 효과적으로 추가하거나 삭제할 수 있는 확장성을 제공했던 이유를 언급합니다.
    3. 대표적인 사용 예시 제시: 사용한 제너릭 컬렉션의 대표적인 사용 예시를 제시하여 실제 상황에서의 활용성을 강조합니다. 이를 통해 사용한 제너릭 컬렉션의 유용성을 보다 명확하게 전달할 수 있습니다.
    4. 경험 공유: 질문에 대한 대답을 보다 구체적으로 하기 위해, 선택한 제너릭 컬렉션을 사용하면서 어떤 어려움이 있었고, 이를 어떻게 극복했는지에 대한 경험을 공유합니다. 이는 면접자에게 실질적인 경험과 역량을 보여줄 수 있는 좋은 기회가 될 수 있습니다.
  • 가비지 컬렉터 GC

 


 

오늘 작업은 대부분 병합 작업을 돕고

터레인을 만드는 데에 시간을 다 소모했다. 

특히 병합 후에 터레인 데이터가 겹쳐 모든 레이어가 사라지면서 다시 칠해야 할 때는 정말 눈물이 났다.

 

 

그렇게 다시 만든 터레인의 모습이다.

적이 나오는 둥지가 5개 존재하고 플레이어가 스폰하는 지역이 하나 존재한다.

 

생각보다 탑뷰에서 미니맵이 있더라도 유저가 길을 잃지 않고 나아가게 만든다는 것은 세심한 작업이 필요한 일이라고 느껴졌다.

 

이를 위해 모래 사막에도 아주 옅게 흰색 길이 나있고 협곡 내부에도 방향에 따라 길이 나있다.

 

둥지 주변에는 모래 안개가 있어 그 존재를 알기 더 쉽게 했다.

 

둥지 앞 안개 속에 도달한 모습