Til 18

김정환·2025년 2월 24일

1️⃣ 코테

조이스틱

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

2️⃣ 개인작업

장비 성능 반영

장비 장착이 가능해지면서 Actor가 전투할 때 성능을 반영해주어야 한다.
반영할 준비를 하다가 ActorAbility 스크립트가 정리가 안됐다는 걸 깨달아서 사전 작업을 진행했다.

사전작업

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

  • 그리고 착용했던 장비들의 성능을 취합해서 받아오도록 했다.
    • 클래스별로 장착했던 장비들에서 성능을 취합하도록 했다.

적용

단순하게 값들을 모두 더하기 보다는 단계를 나누기로 했다.

능력치 구분

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

  • 위처럼 계산해둔 값을 실제 사용할 객체에서 받아와 사용하도록 작업했다.
profile
만성피로 개발자

0개의 댓글