본문 바로가기

TIL

[TIL]2024-4-04 / 64일차 - 최종 프로젝트 5주차 4일차

 

오늘의 코드카타는 오전에 피곤하여 시간 내에 다 풀지 못해서 다음으로 미뤄졌다.

 

1. 오늘의 기술 면접

  1. 자료구조의 종류는 무엇이 있으며 각각 어떤 차이점이 있는지 설명해주세요 <= 우수 답안을 정리

Array(배열) - <동일한 타입의 데이터로 크기가 정적이며 인덱스로 접근하기에 빠르게 접근 가능>

배열은 동일한 자료형의 데이터 요소들을 연속적으로 메모리에 저장하는 자료구조이다.

장점: 빠른 접근이 가능하며 인덱스를 이용하여 데이터를 직접 접근할 수 있다.

단점: 크기를 변경하기 어렵고 중간에 데이터를 삽입하거나 삭제하기 어렵다.배열은 정적으로 할당되며 크기가 변하지 않는다


Linked List(연결 리스트) - <노드가 데이터와 다음 노드를 가리키는 포인터로 구성되어 연결되어 있는 방식>

연결 리스트는 데이터 요소들을 노드라 불리는 객체로 구성하고, 각 노드는 데이터와 다음 노드를 가리키는 포인터로 이루어져 있다.

장점: 데이터 삽입 및 삭제가 쉽고, 크기를 동적으로 조절할 수 있다.

단점: 임의의 위치에 접근하는 데에는 선형적인 시간이 소요되며 추가적인 메모리 공간이 필요하다.

연결 리스트는 단일 연결 리스트와 이중 연결 리스트로 나뉘며, 각각의 노드는 다음 노드를 가리키는 포인터만 가지거나 이전과 다음 노드를 가리키는 포인터를 가진다.


Stack(스택) - <데이터를 위에서 아래로 쌓는 후입선출 방식으로 같은 크기에 자료를 한 방향으로 입력 저장 삭제 하게 됨>

스택은 후입선출(LIFO, Last In, First Out) 원칙에 따라 데이터를 저장하는 자료구조이다.

장점: 데이터를 삽입하고 삭제하는 과정이 빠르며, 구현이 간단하다.

단점: 중간에 있는 데이터에 접근하기 어렵다.

스택은 push(데이터 추가), pop(데이터 제거), top(가장 위의 데이터 확인)과 같은 연산을 지원한다.


Queue(큐) - <대기줄이란 뜻으로 먼저 들어온 데이터가 먼저 나가는 선입선출 구조>

선입선출(FIFO, First In, First Out) 원칙에 따라 데이터를 저장하는 자료구조이다.

장점: 데이터를 삽입하고 삭제하는 과정이 빠르며, 구현이 간단하다.

단점: 중간에 있는 데이터에 접근하기 어렵다.

큐는 enqueue(데이터 추가), dequeue(데이터 제거), front(가장 앞의 데이터 확인), rear(가장 뒤의 데이터 확인)와 같은 연산을 지원한다.


Tree(트리) - <노드들이 나무 가지처럼 연결된 비선형 자료구조>

계층적으로 데이터를 구조화하는 비선형 자료구조이다.

장점: 데이터 검색 및 삽입에 효율적이며, 정렬된 데이터를 저장하기에 유용하다.

단점: 트리의 구현이 복잡할 수 있으며, 균형 트리를 유지하는 작업이 필요할 수 있다.

이진 트리(Binary Tree), 이진 탐색 트리(Binary Search Tree), AVL 트리, 레드-블랙 트리 등 다양한 종류의 트리가 있다.


Hash Table(해시 테이블) - <키와 값을 같이 저장하는 자료구조로 데이터 추가 및 검색에 용이>

키-값(key-value) 쌍을 저장하는 자료구조로, 키를 해시 함수에 적용하여 배열의 인덱스를 계산하고 해당 인덱스에 값을 저장한다.

장점: 빠른 검색 및 삽입이 가능하며, 해시 충돌을 처리하는 기법을 통해 데이터를 효율적으로 저장할 수 있다.

단점: 해시 충돌 발생 시 성능이 저하될 수 있으며, 메모리 공간을 많이 사용할 수 있다.

 

Graph(그래프) - <버텍스와 엣지로 이루어저 버텍스 간의 관계를 나타내는 형태>

정점(버텍스)과 간선(엣지)으로 구성된 자료구조로, 두 정점을 연결하는 방향과 가중치가 있을 수 있다.

장점: 복잡한 관계를 나타낼 수 있으며, 다양한 알고리즘에 활용될 수 있다.

단점: 구현 및 연산에 대한 복잡성이 높을 수 있다.

 

 

     a. 위 자료구조는 무조건 좋은가요?

아니다. 각 주어진 상황에 따라 효율적인 자료구조가 달라지게 된다.
예를 들어 배열은 보다 빠른 접근이 가능하지만 데이터의 추가 삭제가 불가능해
이럴 때에는 해시 테이블이나 연결 리스트 등을 쓰는 등 목적에 따라 필요한 것이 달라지기 때문

 


 

2. 오늘의 작업

오늘은 스테이지 선택을 하는 장치의 애니메이션과 스프라이트를 만들었다.

 

 

이 친구로 인게임에서는 이미 만들어둔 발광 머테리얼을 얼굴 표정에 달아주어 더 비주얼적으로 강화해주었다.

 

 

눈을 깜박이는 모습

 

 

 

장치가 말을 하는 모습

 

 

 

 

스테이지 선택을 위해 좌 우 선택을 할 때의 모습

 

 

 

스테이지 선택을 마친 뒤 스테이지 입장을 위한 열쇠를 내보내는 모습

 

 

 

 


 

또한 캐릭터 변경에 대한 준비를 위해 캐릭터 변경 락커를 만들고 있다.

 

 

이 컨셉을 구현하고자 하여서

 

 

애니메이션이 아직 없지만 스프라이트는 만들어졌다.