1️⃣ 코테
- 풀이 코드
- 풀이 과정
- 문제를 보면 상하, 좌우에 따라 변경 방식이 달라진다.
- 상하 조작 : 알파벳 변경
- 좌우 조작 : 조작할 자리 변경
- 그러므로 크게 두 가지 작업이 필요하다.
상하 조작에서는 가장 적은 횟수로 원하는 알파벳을 찾는 작업이 필요하다.
좌우 조작에서는 가장 적은 횟수로 움직이며 변경할 자리를 찾는 작업이 필요하다.
- 상하 조작 처리
- 문자열을 순회하면서 가장 적은 횟수로 원하는 알파벳을 찾는다.
- 문자를 아스키값으로 바꿔서 A, Z의 아스키 값과 비교하여 가장 작은 값을 찾는다.
- 좌우 조작 처리
- 이 부분은 DFS를 이용하여 완전 탐색을 시도했다.
그때 그때 어떤 방향으로 가야 가장 적은 횟수로 이동할 수 있는지 명확히 알기 어려웠다.
그러므로 완전 탐색으로 좌우 방향을 이동한 결과를 찾고 최솟값을 반환하도록 했다.
- 현재 인덱스에서 앞서 구한 알파벳 조작 횟수가 0 이상인 값을 찾는다.
- 인덱스를 계속 1씩 더해가다가 0 이상인 값을 찾은 경우 이에 대해 DFS를 시도한다.
- 인덱스를 계속 1씩 빼다가 0 이상인 값을 찾은 경우 이에 대해 DFS를 시도한다.
- 완전 탐색을 시도할 수 있던 이유는 문자열의 길이가 최대 20이며
경우의 수는 좌우 이동 2가지뿐이므로 시간 복잡도는 최대 O(2 ^ 20)이다.
- 1024∗1024= 약 106 이상 정도 나온다.
2️⃣ 개인작업
장비 성능 반영
장비 장착이 가능해지면서 Actor가 전투할 때 성능을 반영해주어야 한다.
반영할 준비를 하다가 ActorAbility 스크립트가 정리가 안됐다는 걸 깨달아서 사전 작업을 진행했다.
사전작업


- 위처럼 개별 프로퍼티로 있던 스탯값들을 장비에 따른 성능을 적용하기 용이하게 컬랙션으로 바꿨다.
- 탐색 속도를 위해 Ability 열거형을 키값으로 성능값을 맵핑했다.


- 그리고 착용했던 장비들의 성능을 취합해서 받아오도록 했다.
- 클래스별로 장착했던 장비들에서 성능을 취합하도록 했다.
적용
단순하게 값들을 모두 더하기 보다는 단계를 나누기로 했다.
능력치 구분

- 힘, 민첩, 지능과 같은 능력치는 기초 스탯으로 분리하고
전투에서 바로 사용할 공격력, 방어력, 이동속도, 공격속도는 응용 스탯으로 두었다.
- 그리고 기초 스탯은 대체로 다음과 같이 적용하도록 기획을 정리했다.
- Str(힘)
- 워리어 클래스 스킬에 대한 데미지 증가
- 워리어 클래스의 기본 공격력 증가
- Dex(민첩)
- 이동속도, 공격속도에 10당 1의 보너스 적용
- 레인저 클래스 스킬에 대한 데미지 증가
- Int(지능)
- 마나 회복력에 10당 1의 보너스 적용
- 메이지 클래스 스킬에 대한 데미지 증가
- 위 적용 사항은 개발하면서 좀 더 정리할 것 같다.

- 위처럼 계산해둔 값을 실제 사용할 객체에서 받아와 사용하도록 작업했다.