Least Recently Used

 

public class Main {

	public int[] solution(int c, int n, int[] input) {
		int[] ans = new int[c];
		for(int i = 0; i < c; i++) {
			ans[i] = 0;
		}
		
		for(int x : input) {
			
			int idx = -1;
			
			for(int i = 0; i < c; i++) {
				if(x == ans[i]) {
					idx = i;
				}
			}
			
			if(idx == -1) {
				for(int i = c-1; i >= 1; i--) {
					ans[i] = ans[i-1];
				}
			}
			else {
				for(int i = idx; i >= 1; i--) {
					ans[i] = ans[i-1];
				}
			}
			ans[0] = x;
		}
		
		return ans;
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		
		int c = kb.nextInt();
		int n = kb.nextInt();
		int[] input = new int[n];
		for(int i = 0; i < n; i++) {
			input[i] = kb.nextInt();
		}
		
		for(int x : T.solution(c, n, input)) System.out.print(x + " ");
	}
}

 

 

입력값이

  • 캐시 안에 없을 경우 → 전부 오른쪽으로 한 칸씩 땡긴 뒤 앞에 추가
  • 캐시 안에 있을 경우 → 현재 index 전까지 오른쪽으로 한 칸씩 땡긴 뒤 맨 앞으로 넣기

'Solved > 코딩테스트' 카테고리의 다른 글

토마토(BFS 활용)  (0) 2023.03.29
후위연산식 문제 (Stack)  (0) 2023.03.18
임시반장 정하기 문제  (0) 2023.03.17
쇠막대기 절단 문제 (Stack)  (0) 2023.03.13
크레인 인형뽑기 (Stack)  (0) 2023.03.11