오늘은 모의 면접, 룬스톤 UI를 만들었다.
오늘 받은 질문은 정렬 알고리즘이 뭔지, 선택 정렬과 버블 정렬이 뭔지에 대해 질문을 받았다.
정렬 알고리즘이란, 주어진 데이터 셋을 정해진 순서에 따라 정렬하는 것을 의미하며, 이를 통해 데이터의 탐색을 더욱 효과적으로 하기 위해 사용합니다.
선택 정렬이란, 정렬 시킬 데이터셋의 맨 앞 데이터를 최소값으로 설정한 후, 이후 데이터들과 비교를 진행하여 배열 내 최소값을 찾아내 앞으로 위치시킨 후, 정렬된 원소를 제외한 나머지에 같은 방법을 반복하여 데이터를 정렬하는 방법입니다.
버블 정렬이란, 인접한 두 원소 값을 비교하여 서로의 자리를 교환하는 방식으로, 구현이 쉽지만 모든 원소를 매번 비교를 하기 때문에 비교 횟수가 많으며, 두 원소끼리 비교를 진행하여 자리를 교환하는 만큼 교환 연산 또한 많이 일어나게 됩니다.
둘의 차이점으로는 교환 연산의 발생 횟수가 있습니다. 버블 정렬은 인접한 두 원소의 값을 비교하고 필요할 경우 교환 연산이 일어나기 때문에, 교환 연산이 자주, 많이 일어납니다. 반면 선택 정렬은 최소값을 설정하고 비교를 한 뒤, 비교를 통해 찾은 최소값을 마지막에 맨 앞으로 교환하기 때문에, 최악의 경우에도 교환 연산이 데이터 셋의 크기 - 1번밖에 일어나지 않습니다.
버블 정렬의 시간 복잡도의 경우 최선, 평균, 최악 모두 O(n^2)입니다. 선택 정렬의 경우도 시간 복잡도는 O(n^2)이나, 버블 정렬에 비해 교환연산이 덜 일어나기 때문에 선택 정렬이 버블 정렬보다 일반적으로 좋다고 할 수 있습니다.
현재 저는 아이템, 상점 그리고 룬스톤 기능을 구현하고 있습니다. 아이템의 경우, 무기, 장신구, 소모 아이템, 필드에 드랍이 되는 필드 아이템 4개의 종류로 구현을 하고 있고, 상점의 경우 무기, 장신구, 소모 아이템 중 5개의 아이템이 출력되도록 구현을 했습니다.
그리고 룬스톤 기능을 구현하고 있는데, 룬스톤 기능이란 저희 게임 내 플레이어의 능력치를 올리거나 내리는 기능입니다. 저희 게임에는 플레이어의 능력치를 강화시킬 방법이 2가지가 있는데, 캐릭터 강화 기능과 룬스톤 기능입니다. 먼저 캐릭터 강화 기능의 경우, 던전에 입장하기 전, 플레이어가 캐릭터 선택, 캐릭터 강화를 진행할 수 있는 던전 입장 맵에서 할 수 있는 기능으로, 영구적으로 캐릭터의 능력치를 올릴 때 사용을 합니다.
룬스톤 기능의 경우, 저희가 로그라이크 게임을 만들고 있다보니, 단순히 플레이어가 아이템을 얻고 몬스터를 죽이기만 하면 플레이가 단조로울 것 같아 변주를 주기 위해 만든 기능으로, 해당 도전 내 임시적으로 플레이어의 능력치를 올리고 내릴 수 있는 기능입니다. 플레이어의 특정 능력치가 올라가면 그에 따른 반동으로 다른 능력치가 내려가는 기능입니다.
시선 처리가 좀 더 자연스러워졌고 대답을 잘 했다고 말씀을 해주셨으나, 개인적으로 많이 절었다고 생각한다. 키워드 중점으로 정리를 잘 해서 외워야 할 것 같음.
현재 고민 중인 룬스톤 기능 구현 방법에 대해 적으려 한다.
강화할 플레이어의 스탯의 버튼을 누른 후, 아래에 있는 게이지 바에서 커서가 왔다 갔다하다가, 플레이어가 스탑을 시켰을 때 커서의 위치에 따라 디메리트 부여 여부를 결정하기?
예를 들어, 빨강과 주황의 경우 디메리트가 추가가 되고, 노랑의 경우 디메리트 없이 스탯 강화, 초록의 경우 스탯 강화에 보너스로 얼마 추가와 같이 한다면?