본문 바로가기

알고리즘/인프런

섹션 6. Sorting and Searching(정렬, 이분검색과 결정알고리즘) 5. 중복 확인

문제

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

입력

  • 첫 번째 줄에 캐시의 크기인 S(3<=S<=10)와 작업의 개수 N(5<=N<=1,000)이 입력된다.
  • 두 번째 줄에 N개의 작업번호가 처리순으로 주어진다. 작업번호는 1 ~100 이다.

출력

  • 마지막 작업 후 캐시메모리의 상태를 가장 최근 사용된 작업부터 차례로 출력합니다.

입출력 예제


풀이방식

이번 문제는 배열의 정렬 함수를 사용하여 푸는 문제이다.


설계과정

1. 배열에 값을 넣고 오름차순으로 정렬한다.

2. 앞뒤 값을 비교하여 동일한 값이 있으면 D, 없으면 U를 출력한다.


풀이과정

1. 값들을 입력받는 코드를 작성한다.

 

2. String 형으로 메소드를 작성한다.

 

3. 입력받은 배열을 오름차순으로 정렬한다.

  • sort() : 오름차순으로 배열을 정렬해준다.

4. 앞뒤 값을 비교해서 동일한 값이 있으면 D 를 출력한다.

  • 이미 오름차순으로 정렬한 상태이므로 하나라도 동일한 값이 있으면 중복이 있다는 의미이다.

5. 중복이 없으면 "U"를 출력한다.

  • 초기화한 값이 U 이므로 그대로 리턴한다.

해당 글은 인프런 > 자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비(김태원)강의를 참고하여 작성하였습니다.