자료구조 6

Least Recently Used(LRU) 카카오 캐시 문제 변형

캐시메모리는 CPU와 주기억장치(DRAM) 사이의 고속의 임시 메모리로서 CPU가 처리할 작업 을 저장해 놓았다가 필요할 바로 사용해서 처리속도를 높이는 장치이다. 워낙 비싸고 용량이 작아 효율적으로 사용해야 한다. 철수의 컴퓨터는 캐시메모리 사용 규칙이 LRU 알고리즘을 따 른다. LRU 알고리즘은 Least Recently Used 의 약자로 직역하자면 가장 최근에 사용되지 않 은 것 정도의 의미를 가지고 있습니다. 캐시에서 작업을 제거할 때 가장 오랫동안 사용하지 않은 것을 제거하겠다는 알고리즘입니다. 만약 캐시의 사이즈가 5이고 작업이 순으로 저장되어 있다면, (맨 앞이 가장 최근에 쓰인 작업이고, 맨 뒤는 가장 오랫동안 쓰이지 않은 작업이다.) Cache Miss : 해야할 작업이 캐시에 없는 ..

알고리즘 2023.01.10

삽입정렬

N개이 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요. 정렬하는 방법은 삽입정렬입니다. 입력예제 11 7 5 6 10 9 출력예제 5 6 7 9 10 11 풀이 function solution(arr){ // 배열 얕은복사로 인해 arr가 바뀌면 answer도 바뀜 let answer=arr; // arr 요소와 arr요소의 나머지 요소를 비교를 위해 이중 for문 for(let i=0; i=0; j--){ //arr[j] (arr[i-1]) 가 tmp (arr[i]) 보다 크면 arr[j+1] 인덱스에 arr[j]를 저장한다. if(arr[j]>tmp) arr[j+1]=arr[j]; //for문을 다돌아서 만약 arr[j]가 tmp보다 작다면 for문을 탈출한다. else brea..

알고리즘 2022.12.22

버블정렬

N개이 숫자가 입력되면 오름차순으로 정렬하여 출력하는 프로그램을 작성하세요. 정렬하는 방법은 버블정렬입니다. 오름차순으로 정렬된 수열을 출력합니다. 입력예제 13 5 11 7 23 15 출력예제 5 7 11 13 15 23 function solution(arr) { //얕은복사로 인해 arr가 바뀌면 answer 값도 바뀜 let answer = arr; //버블 정렬은 특정요소와 그 특정요소의 인덱스 +1 요소와 크기를 비교하기 때문에 // 맨마지막 요소는 해당 마지막요소의 +1 인덱스가 없기때문에 arr.length -1 까지의 길이만 반복문을 실행한다. for (let i = 0; i < arr.length - 1; i++) { //버블정렬은 맨마지막요소가 차례차례 가장 큰 수가 뒤로오기 때문에,..

알고리즘 2022.12.15

교육과정설계(큐)

현수는 1년 과정의 수업계획을 짜야 합니다. 수업중에는 필수과목이 있습니다. 이 필수과목은 반드시 이수해야 하며, 그 순서도 정해져 있 습니다. 만약 총 과목이 A, B, C, D, E, F, G가 있고, 여기서 필수과목이 CBA로 주어지면 필수과목은 C, B, A과목이며 이 순서대로 꼭 수업계획을 짜야 합니다. 여기서 순서란 B과목은 C과목을 이수한 후에 들어야 하고, A과목은 C와 B를 이수한 후에 들 어야 한다는 것입니다. 현수가 C, B, D, A, G, E로 수업계획을 짜면 제대로 된 설계이지만 C, G, E, A, D, B 순서로 짰다면 잘 못 설계된 수업계획이 됩니다. 수업계획은 그 순서대로 앞에 수업이 이수되면 다음 수업을 시작하다는 것으로 해석합니다. 수업계획서상의 각 과목은 무조건 이수..

알고리즘 2022.12.12

아나그램(자바스크립트)

Anagram이란 두 문자열이 알파벳의 나열 순서를 다르지만 그 구성이 일치하면 두 단어는 아 나그램이라고 합니다. 예를 들면 AbaAeCe 와 baeeACA 는 알파벳을 나열 순서는 다르지만 그 구성을 살펴보면 A(2), a(1), b(1), C(1), e(2)로 알파벳과 그 개수가 모두 일치합니다. 즉 어느 한 단어를 재 배열하면 상대편 단어가 될 수 있는 것을 아나그램이라 합니다. 길이가 같은 두 개의 단어가 주어지면 두 단어가 아나그램인지 판별하는 프로그램을 작성하세 요. 아나그램 판별시 대소문자가 구분됩니다. 입력예제 AbaAeCe baeeACA 출력예제 YES 풀이 function solution(str1, str2) { let answer = "YES"; let hash = new Map()..

알고리즘 2022.10.11

학급 회장(해쉬)

학급 회장을 뽑는데 후보로 기호 A, B, C, D, E 후보가 등록을 했습니다. 투표용지에는 반 학생들이 자기가 선택한 후보의 기호(알파벳)가 쓰여져 있으며 선생님은 그 기호를 발표하고 있습니다. 선생님의 발표가 끝난 후 어떤 기호의 후보가 학급 회장이 되었는지 출력하는 프로그램을 작 성하세요. 반드시 한 명의 학급회장이 선출되도록 투표결과가 나왔다고 가정합니다. [입력예제] BACBACCACCBDEDE [출력예제] C function solution(s) { let answer; let hash = new Map(); for (let x of s) { if (hash.has(x)) hash.set(x, hash.get(x) + 1); else hash.set(x, 1); } let max = Numb..

알고리즘 2022.09.18