Til 19

김정환·2025년 2월 25일

1️⃣ 코테

코테 문제를 풀다가 처음보는 단어라 공부를 하고 문제를 풀어보기로 했다.

백트래킹

  • 현재 상태에서 가능한 모든 후보군을 따라 들어가며 탐색하는 알고리즘

  • 완전탐색의 일종으로 가능한 모든 경우의 수를 탐색하는 것.

  • 예시) 알파고 or 오목
    - 용어만 몰랐을 뿐, 알게 모르게 쓰고 있었을 것.

  • 재귀를 활용

    • 재귀 특성상, 어디서 틀렸는지 알기 어려움
    • 응용하기까지 연습이 필요함.
  • 시간복잡도를 가늠하기 어려움

    • 시간초과가 날 수도 있으니 최악의 경우 시간복잡도를 확인해봐야 함.

개념을 익히고 예시 문제들을 풀었다.

N과 M 1

  • 풀이 코드
  • 풀이 과정
    • 두 정수 n,m을 입력 받아 n만큼의 수를 중복없이 m개 고르는 문제이다.
    • 개념적으로 m개 만큼의 칸이 있고 그 칸에 1~n까지의 수를 고른다고 생각했다.
    • 칸에 들어갈 수에 대한 재귀 함수를 작성하여 완전탐색을 시도했다.
      • 1번 칸에 1이 들어가면 재귀하면서 2~n까지의 탐색을 실시한다.
      • 이때 1, 1, 1, ... 과 같은 중복을 방지하기 위해 방문 정보를 bool 배열에 담아 체크했다.

N과 M 2

  • 풀이 코드
  • 풀이 과정
    • 위의 문제에서 수열을 오름차순으로 출력한다는 조건이 추가되었다.
      • 앞에 들어온 수가 1인 경우에는 2~n까지 모든 수에 대해 탐색을 실시하면 되지만,
        만약 2인 경우에는 다음 칸에 1이 들어올 수 없다.
    • 위 규칙에 따라서 칸에 들어올 수를 탐색하는 과정에서 지금 넣으려는 수가 직전 칸의 수보다 작다면 탐색을 종료하는 조건을 추가하여 풀었다.
    • 이렇게하면 따로 중복을 처리하거나 정렬을 해줄 필요가 없어진다.

2️⃣ 개인작업

캐릭터 모델 적용

스킬 작업에 들어가려고 했다.
근데 파란색, 빨간 캡슐에 스킬 효과를 넣기보다는 애니메이션이 있는 캐릭터 모델이 스킬을 쓰도록하는 것이 낫겠다고 생각했다.

스킬 효과 애니메이션을 만들어놓고 나중에 캐릭터 애니메이션이 들어오면 맞춰주는 작업을 해줘야 하다보니 캐릭터 애니메이션 작업이 선행되어야 했다.

그리고 캐릭터 애니메이션 작업을 하려면 이제 캐릭터 모델을 적용해야했다.

에셋

캐릭터 모델은 에셋스토어에서 무료로 얻은 캐릭터 패키지를 사용하기로 했다.

머리, 눈, 수염 유무 등등 커스터마이징이 가능하게 메쉬가 분리되어 있는 에셋이었다.
메쉬의 버텍스 수 자체가 그리 많지 않은 캐주얼하게 사용할 수 있겠다 싶었다.
위의 이미지 외에도 좀 더 종류가 많아서, 임시로 사용하는 목적에서는 좋겠다고 생각했다.

교체 작업

당장에 필요한 캐릭터는 전사, 궁수, 마법사처럼 생긴 캐릭터 3개이다.
필요한 캐릭터를 에셋에서 골라왔고 다음과 같이 프리팹화 시켰다.

이름을 이렇게 지은 이유는
고유한 키값, 클래스, 캐릭터 이름으로 리소스 폴더 내에서 특정 캐릭터를 로드하기 위함이다.
스킨과 같은 경우가 아니라면 한 캐릭터의 데이터에 대해서는 한 개의 모델링이 매칭될 것이다.

캐릭터 모델에는 유틸리티용으로 위의 이름을 반환하는 프로퍼티를 작성해두었다.
그리고 해당 캐릭터에 대해서 어떤 리소스(모델, 애니메이션, 썸네일 등등)를 로드할 때
각각의 리소스 경로에서 이 이름으로 된 파일을 로드하는 식으로 사용할 것이다.

아래는 ObjectName 프로퍼티로 캐릭터 모델을 로드하는 메서드이다.

이렇게 해두면 해당 캐릭터를 생성할 때, 리소스 > 프리팹 경로에 해당하는 프리팹만 있으면 된다.

profile
만성피로 개발자

0개의 댓글