백준 프로그래머스 알고리즘 문제라는게 결국 어려운건 비문학 문제라 대체 뭘 원하나 내용 파악이 어렵고...


시간 복잡도 개발도 요새는 거의 쓰지도 않고.


소트 정렬 알고리즘, 이진, 그래프 등등 다 기억도 잘 안나는데 예전엔 열심히 풀었는데


솔직하게 말하자면 정렬 같은거 LinQ 쓰는게 낫고


기본적으로 자료 정리 이런것들 보면 대외적으로 잘 쓰이는 라이브러리가 있어서 그거 쓰는게 틀렸을때 에러 대처가 편함.


물론 모든 이런 범용적인 라이브러리는 오버헤드를 가지기때문에 최적화 위해서는 결국 자기가 알고리즘 맞춰야해서 빅오 표기법 배워야하니 하는데


까놓고 이야기하면 현대 컴퓨터의 발달로 그냥 게임의 경우엔 3D는 기본적으로 버텍스 이런게 문제라 오히려 저런 오버헤드 정도는 충분히 감내 가능함.


오히려 어떤 문제에 대한 범용적인 솔루션등이 지금은 인터넷상에 굉장히 많음.


그럼 알고리즘을 써야할때라는 건 저런 문제등을 응용해야할때인데,

오히려 개인이 알고리즘을 풀어서 가져왔을때 버그 처리나 이런거 생각하면 오히려 수지타산에 안맞음


나는 A* 알고리즘을 직접 계산해서 변형했는데, 막상 생각해보면 오히려 유니티 전용 A* 무료 에셋 쓰는게 사고쳤을때 인터넷에 질문하기에 편함.


쿼드 트리 알고리즘도 내가 직접 구현했는데, 이것도 결국 범용적으로 쓰이는게 있어서 그거 쓰면 질문하는게 더 편함.


그래프도 매한가지. 내가 직접 구현하는 건 일종의 바퀴의 재발명 같음.


결국 유지보수를 하기 위해선 범용적인 라이브러리를 택하는게 훨씬 나은 선택인거 같고, 차라리 어떤 정렬과 유형별로 자주 쓰이는 라이브러리, 프레임 워크 쓰는 법 이런거 알려주는게 더 나은거 같단 생각도 듬.


오버헤드 때문에 자기가 맞게 변형 해야하고...이러는데 요즘 컴퓨터들이 옛날 컴도 아니고... 휴대폰만봐도 성능 개좋은데 그래야하나 싶고. 게임 개발에서 대체로 주요 자원 쳐먹는거보면, 대부분은 매시 렌더링에서 대부분 잡아먹음. 범용 라이브러리의 오버헤드가 그정도인가도 솔직히 모르겠고.

알고리즘을 씀으로써 응용력이 올라가고, 문제 해결 능력에 대한 향상이 있다 하는데, 막상 시간 지나면 그 문제 유형을 까먹어서 그냥 문제 유형마다 보편적인 라이브러리 쓰는게 더 나은거 같고.


절차적 생성만해도 BSP 직접 계산해서 지랄 했지만 결국 남이 자주 쓰는거 썼으면 이럴 일도 없었고.


디자인 패턴도 결국 패턴 안쓰고 내 식대로 개발하면서 질문하다 막히기 시작하면 어려워지니까 결국 어느정도 부하 포기하고 리팩토링해서 패턴 맞추듯이


결국 내가 이 문제를 유지보수 할 수 있는가에 대한 초점으로 봤을때, 알고리즘을 내가 직접 적용한다는게 좀 시간 아깝단 생각이 많이듬.


오히려 유지보수만 힘들어지는 경향이 있는듯.


알고리즘을 쓰면 코테에서 유리하다는 건 익히 들어 잘 알겠는데, 그거랑 별개로 내 식대로 만들어 쓰는거랑 범용 라이브러리, 프레임워크 쓰는거랑


유지보수에서 난이도가 달라져서 알고리즘 직접 푸는게 좀 손해같단 생각 많이함..