나만의 알고리즘 문제 설계방식 * 나만의 알고리즘 문제 설계방식 1. 종이에 해당하는 조건들을 꼼꼼히 적는다. 2. 처음에는 가장 쉬운 완전탐색부터 생각한다. 3. 시간복잡도를 고려하였을 때, 가능한지 생각해본다. 4. 불가능하다고 생각되면 다른 알고리즘을 생각해보고... 5. 가능하다고 생각되면, 디테일한 풀이는 적는다. 6. 풀이의 항목 별로 함수화 시켜서, 구현한다. 동적분석을 통해, 코드를 확인하고, 올바르게 작동하지 않는다면 풀이대로 작동하게 만들어졌는지, 정적분석을 한다. 만약, 이렇게 코드 디버깅 하는 시간이 1시간이 넘어간다면, 질문 또는 다시 설계를 진행하는 것이 좋다. 더보기 [알고리즘] Binary Search란? * 이름이 붙여진 것처럼 Search하는 알고리즘인데, binary의 방법으로 진행한다. =>binary 방법이라는 것은 하나의 배열을 반으로 나누어서, 둘 중 한쪽을 선택하고, 또 반으로 나누고를 반복하는 방식이다. * 전제 조건 => 정렬되어 있어야 한다. * 과정 => 정렬이 되어있다는 전제하에 진행한다. (실제로 정렬이 되어있지 않다면, 정렬 후 진행해야 한다.) 1. 숫자 n을 찾는다고 가정 하였을 때, 중간 값 middle을 정한다. 2. middle보다 n이 크다면, middle보다 큰 쪽을 본다. 3. middle보다 큰 쪽에서 1과 2를 반복적으로 진행하여, 숫자를 찾는다. * 애니메이션 http://www.cs.armstrong.edu/liang/animation/web/BinarySe.. 더보기 [알고리즘/시간복잡도] log이란?? * 컴퓨터 공학에서 log를 쓰는 경우 그 밑이 2이므로, 보통 밑을 생략한다. log 32 = 5log 64 = 6log 32 < log 50 < log 64 * 숫자 n이 있을 때, log를 취하게 되면 엄청나게 작아지게 된다. * log n은 숫자가 크지 않기 때문에 속도에 영향이 적음 * 따라서 log n이 들어간 시간복잡도는 매우 빠른 편에 속한다고 할 수 있다. 더보기 이전 1 2 3 4 다음