
이진 검색 알고리즘 이진 검색은 요소가 오름차순 또는 내림차순으로 정렬된 배열에서 검색하는 알고리즘 이다. 이 알고리즘을 적용하는 전제 조건은 데이터가 키 값으로 이미 정렬 되어 있어야 한다. 그리고 이진검색은 선형 검색보다 좀 더 빠르게 검색 할 수 있다는 장점이 있다. 이진 검색 알고리즘의 종료 조건 1. 중간 인덱스의 값이 key와 일치하는 경우. 2. 검색 범위가 더 이상 없는 경우 이렇게 길이가 10인 배열에서 46을 찾는다고 해보자. 1. 가장 처음으로는 0과 9의 중간값인 4번 인덱스를 검사한다. 2. 우리가 찾는 숫자는 46이기 때문에 4번 인덱스의 값 32는 키 값 보다 작다. 3. 그러므로 우리는 중간인덱스 앞의 값들은 검사를 안해도 상관 없다고 확신을 할 수 있다.(정렬이 되어있다면)..

잘가 리틀넛 여러가지 생각의 변화로 만들던걸 엎어버리고 다른걸 만들게 됐다. 게임을 만들지말고 포트폴리오를 만들라는 얘기를 많이 들었는데 하다보니 자꾸 살이붙고 하고싶은걸 넣고 있었다.. 심지어 기본적인게 마무리되면 농사랑 낚시까지 생각을 했었는데 좀 잘못 생각한느낌이 들었다. 배운지 몇 달 밖에 안된나도 완벽하진 못하지만 RPG의 기본시스템들을 만들어 나갔는데 대화,아이템 데이터 상세하게 만들시간에 최적화 기법이나 남들이 못하는 연출에 더 힘을 쏟아야 될 것 같았다. 3주가까이 정말 잠도 잘 못자고 쏟아부어서 아쉽기는 하지만 더 안자면 되지.. 나중에 다시 살려줄게 리틀넛.. 새로운 시작 다시 시작한 포트폴리오는 연출과 최적화를 가장 우선으로 생각하면서 할예정이고, 다시 시작해서 늦어진만큼 7월 말완성..
객체 지향 프로그래밍 (Object Oriented Programming) JAVA나 C#,C++과 같은 언어를 다뤄보신 분들이라면 어디선가 무조건 한번이상은 들어 보셨을것이다. 근데 말로만 들었지 면접때 객체 지향 프로그래밍이 뭔가요? 라고 물어본다면 뭐라 정의를 내리기가 애매하고 생각이 나지 않는다. 그래서 다시 한번 공부하고 정리를 해봤다. 내가 정의해보는 객체 지향 프로그래밍 당장 내 책상위에 올려져있는 물건들만 봐도 한 두개가 아니다. 나는 공부를 위해 책상위에 노트와 펜을 올려놨다. 공부를 하려면 노트라는 객체에 펜이라는 객체를 이용해 필기를 하며, 키보드라는 객체를 이용해 정보를 검색하고 모니터라는 객체를 이용해 검색한 결과물들을 시각적으로 확인 할 수있다. 이 처럼 현실세계에서도 여러 객체..
선형 검색(linear search) ,순차 검색(sequential search) 선형검색 & 순차 검색 이란? 요소가 직선 모양으로 늘어선 배열에서 원하는 키값을 갖는 요소를 만날 때까지 맨 앞부터 순서대로 요소를 검색하여 값을 찾아내는 알고리즘 선형검색 (linear search) , 순차 검색(sequential search) 이라고도 부른다. 선형 검색의 종료 조건 1. 검색할 값을 발견하지 못하고 배열의 끝을 지나간 경우 2. 검색할 값과 같은 요소를 발견한 경우 1번의 조건이 성립하면 검색 실패, 2번의 조건이 성립하면 검색 성공이다. 사실 선형 검색은 선형 검색이라는 알고리즘을 배우지 않아도 프로그래밍을 해 본 사람이라면 이름만 모를 뿐이지 많이들 쓰고 계시는 방식일 것이다. 코드 구현 #..

대화 때문에 걱정을 계속 했었는데 머리로 생각한대로 구현이 돼서 다행이다. 알림시스템과 레벨업 처음엔 알림을 한개로 했었는데 알림이 많을경우에 너무 오래 밀리는 현상이 있었다. 그래서 알림창 2개를 두고 알려주도록 바꿨다. 그리고 레벨업을 하면 화면에 레벨업이 크게 뜨고 효과음이 나오게 처리했다. 레벨이 Set될때 프로퍼티에서 바로 레벨업 함수를 쓸 수 있게 델리게이트로 넘겨주어 사용했다. 사냥터 진입 금지 첫번째 퀘스트를 받지 않으면 막아두고 퀘스트를 받으라는 알림을 뜨게 했다. 만약 이미 첫번째 퀘스트를 깨고 저장해서 불러올때는 awake때 깼는지를 확인하여 길을 열어준다. 대화 시스템 준비 예전에 구현을 살짝 해놨었지만 맘에 안들어서 다 지워버리고 다시 시작했다. 엑셀로 인덱스,캐릭터, 대화 내용을..

오브젝트 풀링 오늘은 생각만 하고 있었던 오브젝트 풀링을 한번 구현해봤다. 오브젝트 풀링이란 말그대로 오브젝트를 담을 풀을 준비하고 미리 생성해두어 쓸 때 빌려주고, 다 쓰고나면 반납하는 방식을 얘기한다. 동적으로 생성하고 지우고를 반복하면 쓰레기 메모리가 쌓이고, C#의 가비지 컬렉터가 이 메모리를 청소해간다. 조금 조금씩 청소하는것이 아니라 한번 치우러 오면 양에 상관없이 한번에 치우기 때문에 프레임이 튄다. 위와 같은 상황을 미리 방지하고자 오브젝트 풀링을 쓴다. 하지만 미리 생성하고 가지고 있는다는건 그만큼 메모리를 차지하고 있다는 얘기다. 그래서 수십번 instantiate와 오브젝트 풀링을 번갈아가며 프로파일러를 보며 실험을 해봤는데 아직까지 유의미한 차이는 못느꼈다. 언젠간 느낄 날이 올 거..