Algorithm/inflearn

★★LRU(캐시, 카카오 변형)

마닐라 2021. 9. 27. 23:00

 

 

import java.util.*;

public class Main {

    public static int[] solution(int size, int k, int[] arr) {
        int[] answer = new int[size];

        //작업 번호를 탐색
        for(int i = 0; i < arr.length; i++) {
            //miss임을 판단 하는 인덱스 번호
            int pos = -1;

            //hit 났을 때 해당 인덱스 값을 구하기
            for(int j = 0; j < size; j++) {
                if (arr[i] == answer[j]) pos = j;
            }

            //miss이면 마지막 작업 부터 1번 인덱스까지 값들을 뒤로 보내기
            //문제에서 마지막 값인 7을 없애고 그 이전에 있는 6을 넣어야함.
            //0번 인덱스는 현재 작업 넣을거다.
            if(pos == -1) {
                for(int j = size-1; j >= 1; j--) {
                    answer[j] = answer[j - 1];
                }
            }
            //hit이면 hit난 지점부터 1번 인덱스까지 값들을 뒤로 보내기
            //0번 인덱스는 현재 작업 넣을거다.
            else {
                for(int j = pos; j >= 1; j--) {
                    answer[j] = answer[j - 1];
                }
            }

            //무조건 현재 작업은 앞에 들어간다.
            //이게 맨 처음에 들어가면 뒤로 보내는 작업을 할 때
            //1번 인덱스에 0번 인덱스의 값이 들어가져버리므로
            //뒤로 보내는 작업이 끝나고 나서 넣어주는게 맞다.
            answer[0] = arr[i];

        }

        System.out.println(Arrays.toString(answer));

        return answer;
    }

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int[] arr1 = {1,2,3,2,6,2,3,5,7};
        int[] arr2 = {1,5,3,5,1,2,1,4};
        int[][] arr3 = {{3,4,1,2}, {4,3,2,1}, {3,1,4,2}};

        solution(5, 9, arr1);

    }

}

 

'Algorithm > inflearn' 카테고리의 다른 글

장난꾸러기  (0) 2021.09.27
중복 확인  (0) 2021.09.27
삽입정렬  (0) 2021.09.20
버블정렬  (0) 2021.09.20
#선택 정렬  (0) 2021.09.20