SPRT BootCamp Unity : 9일차

강동현·2025년 10월 2일

SpartaCodingClub_Unity_12th

목록 보기
14/23

1. 금일 학습 내용

  • 정렬
    • 파티션 정렬(알고리즘X)
    • Array.Sort를 이용한 정렬

파티션 정렬

  버블, 힙 정렬 같은 알고리즘이 있는 정렬이 아닌 단순 타겟을 배열의 오른쪽 혹은 왼쪽으로 모으는 방법이다.
  퀵정렬 등과 같은 정렬 알고리즘에서 자주 쓰이는 핵심 절차이다.

int index = 0;
for (int i = 0; i < item.Length; i++)
{
 if (item[i] != null && item[i].canEquip == true)
 {

    (item[index], item[i]) = (item[i], item[index]);
     index++;

}
}
(실제로 내가 사용한 코드, bool값이 true인 target을 배열의 왼쪽(0번째)으로 옮김)

Array.Sort를 이용한 정렬

  •   C#에서 지원해주는 정렬 함수, 버블 정렬 같은 기본 알고리즘이 아닌 Introsort(인트로소트)라는 퀵정렬 + 힙정렬 + 삽입정렬 이 세 가지 정렬 알고리즘의 방식을 섞은 정렬 알고리즘을 사용한다.

  •   비교 함수를 넘겨주어 정렬의 기존을 자유롭게 정할 수 있는 장점이 있다.
    Array.Sort(item, (a, b) =>
    {
       if (a == null && b == null) return 0;
       if (a == null) return 1;
       if (b == null) return -1;
       return a.Name.Length.CompareTo(b.Name.Length);
    });
(a 이름의 길이가 b보다 짧으면 b 앞으로 오며 배열의 모든 원소를 다 확인 후 마지막엔 짧은 순으로 정렬이 된다)

2. 문제점

3. 다음 학습 내용

  • Text Rpg 도전단계 마무리
  • 영상 강의 진행

4. 느낀 점

  도전을 하면서 적혀있는 조건들 + 내가 추가로 더 하고 싶은 것을 진행하면서 모르는 것을 찾고 그 찾은 내용을 공부하다보니 생각했던 것 보다 오늘 진행 정도가 많이 늦어졌다. 점점 아는 것이 늘어가고는 있긴 하지만 이건 정규 학습 시간 외 진행하고 일단 정규 학습 땐 과제들, 기간 안에 해야 할 것들을 우선적으로 하는 것이 맞아보인다

0개의 댓글