페이지 교체 알고리즘이요??… 아니 무슨 그냥 수학적 알고리즘 접근도 어렵던데, 메모리 관련 알고리즘까지?…. 사실 코딩테스트 문제를 풀다가 LRU를 통하여 문제의 해답을 구하라는 카카오 문제가 있었습니다! “LRU?? 그게 뭔데 씹덕아” 근데 이걸 모르면 못푸는 문제였습니다 헿….그래서 LRU에 대하여 서칭을 한 다음에 문제를 풀었죠 그때 서칭했던 LRU에 대한 정보들이 생각보다 흥미롭고 재밌어서 따로 정리를 해보고자 합니다! 페이지 교체 알고리즘 저희가 사는 지구에는 자원이 한정적이죠? 최대한 효율적으로 자원을 사용하기 위해서 세상에는 많은 규칙과 법이 존재합니다.그 알고리즘 중에서 제한된 한도내에서 최고의 효율을 얻기 위한 알고리즘을 “페이지 교체 알고리즘” 이라고 합니다! 그 중에서 컴퓨터의 자원..
그래프 탐색이요?… 간단합니다. 하나의 정점에서 시작하여 차례대로 모든 정점들을 한 번씩 방문하는것이죠! 그렇다면 방문하는 기준이 다른 여러가지 방식들이 존재하겠죠? 오늘은 깊이 우선 탐색! 이라는것에 대해 알아보도록 하겠습니다! 깊이 우선 탐색 DFS(Depth-First Search) DFS (Depth-First Search) 말 그대로 루트 노드(혹은 다른 임의의 노드)에서 시작하여 다음 분기로 가기전에 해당 분기를 끝까지 탐색하는 방법 넓게~ 탐색하는게 아닌 (근처에 노드들을 다 방문해가는게 아닌) 깊게!!!(한가지 분기점의 끝까지) 탐색하는것입니다. 완전탐색을 하고자할때 DFS탐색방식을 이용합니다. 미로를 예로들어보면 한방향으로 일단 끝까지 갔다가 막혀있으면 다시 되돌아가 처음 만나는 분기점에..
ha…..행렬의 곱셈…..수포자는 정말 싫습니다. 근데 알고리즘에 행렬의 곱셈을 이용해야 하는 문제가 나오니까 정말 머리가 하애지더라구요?…. 저의 무지함을 또 깨닫게 되면서 “역시 세상엔 배울게 너무나도 많구나” 를 깨닫고 정리를 해보고자 합니다 ^^ 💡 찾아보니까 무슨 모의고사나 수능에서 계산문제로 하나는 반드시 출제가 된데요 ^^ 진짜 xxx….ㅎㅎ 행렬 == 배열 즉, A배열, B배열이 있을때 A배열의 열 * B배열의 행 입니다. 그림을 보니까 바로 이해가 가시죠? 두 행렬을 B * A로 만들때, 주의 해야 될점은 *를 기준으로 앞에 있는 행렬의 행의 개수와 * 뒤에 있는 행렬의 열의 개수가 똑같아야 합니당! 이렇게 2개의 행렬이 있다고 쳐봅시다! C[0,0]에 있는 곱의 결과는 (A[0,0] x..
페이지 교체 알고리즘이요??… 아니 무슨 그냥 수학적 알고리즘 접근도 어렵던데, 메모리 관련 알고리즘까지?…. 사실 코딩테스트 문제를 풀다가 LRU를 통하여 문제의 해답을 구하라는 카카오 문제가 있었습니다! “LRU?? 그게 뭔데 씹덕아” 근데 이걸 모르면 못푸는 문제였습니다 헿….그래서 LRU에 대하여 서칭을 한 다음에 문제를 풀었죠 그때 서칭했던 LRU에 대한 정보들이 생각보다 흥미롭고 재밌어서 따로 정리를 해보고자 합니다! 페이지 교체 알고리즘 저희가 사는 지구에는 자원이 한정적이죠? 최대한 효율적으로 자원을 사용하기 위해서 세상에는 많은 규칙과 법이 존재합니다.그 알고리즘 중에서 제한된 한도내에서 최고의 효율을 얻기 위한 알고리즘을 “페이지 교체 알고리즘” 이라고 합니다! 그 중에서 컴퓨터의 자원..
선형검색, 이진검색이란? 선형 검색(Linear Search) 다른이름으로 순차 검색(Sequential Search) 이라고도 하는 선형검색에 대하여 먼저 알아보겠습니다. 선형 검색은 데이터가 모인 집합(배열, LinkedList 등)의 처음부터 끝까지 하나씩 순서대로 비교하며 원하는 값을 찾아내는 알고리즘입니다. 쉽게 말해 index가 0부터 100까지 있다고 한다면, 찾고자하는 값이 어느 인덱스에 있는지 모르니! 인덱스 하나하나를 다 열어보면서 찾고자 하는 값이 해당인덱스를 열어봤을때 일치할때 까지 반복을 한다고 생각하면 됩니다. 즉, index 0 ~ 100 까지 반복 (100번 반복) for문으로 100번 회전하게 만들고 한번 회전할때마다 그 값이 일치하는지 알아보면 되겠죠??? 코드: int ..
대표적인 기초! 정렬방법을 알아보고 구현을 해보자! 정렬이란 뭘까요오? 일단 쉽게 말하자면 5,2,3,1,4 가 있다고 가정하면 이 숫자를 오름차순 혹은 내림차순으로 정리한 것도 정렬이라고 할수 있죠??? 이와 같이 숫자와 같은 데이터가 있을때 그걸 12345…. 혹은 987654… 이렇게 정리해도 정렬! 혹은 문자열이 있을때, a. , b~~ ,c~~~ 이렇게 사전처럼 앞글자를 기준으로 오름차순 내림차순 하는것도 정렬!! (솔직히 이게 이해가 안가면 개발자를 떠나서 디지게 맞아야함) ^^; 자 그렇다면 자바에서는 정렬을 언제 쓰고 왜 쓸까요?? 예를 들어 저희가 배열에 고객의 개인정보를 숫자에 넣어서 1~100 까지 무작위로 정리를 해놨다고 칩시다. 그러면 일단 배열은 직접 인덱스 번호를 쳐서 데이터를..
Hash란 무엇일까요?? 아무래도 프로그래밍을 하다보면 자주 듣게 되는 단어인거 같은데 저는 잘 모르겠었거든요…. 그래서 한번 정리도 하고, 이해도 할겸 글을 써볼려고합니다! 일단 Hash라고 하면은 데이터를 처리하는 기법중 하나인데, 주로 저장,검색과 같은 기능을 구현할때 좋은 성능을 보여준다고하여 많은 쓰임새를 얻고 있습니다! Hash를 쓸때 중점적으로 알아봐야 할건? 바로 key, value 입니다! key와 value는 한쌍으로 존재를 하는데요 이것을 바로 Hash Table 이라고 부릅니다. Key는 Hash에서 매핑을 할 때 사용하는 인덱스. 라고 생각하면 전체적인 이해는 되는거 같습니다!! 그리고 Key는 절대로 중복이 되지 않습니다. 만약에 같은 Key에 또 다른 데이터를 넣게 되면 전에 ..