-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
37번 LRU
21.01.11 21:26 작성 조회수 200
0
37번 LRU
#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>
using namespace std;
int main(int argc, char** argv)
{
int s,n, wNum, hit = -1, tmp, usedSize = 0;
cin >> s >> n;
vector<int> v(s);
cout << "s : " <<s << " " << "n : " << n << "\n";
for(int t = 0; t < n; t++)
{
cin >> wNum;
for(int i = 0; i < v.size(); i++)
{
if(v[i] == wNum)
{
hit = i;
break;
}
}
//hit일때
if(hit != -1)
{
tmp = v[hit];
for(int i = hit - 1; i>=0; i--)
{
v[i+1] = v[i];
}
}
else
{
for(int i = s-1; i>=0; i--)
{
v[i+1] = v[i];
}
}
v[0] = wNum;
hit = -1;
}
for(int i = 0; i < s; i++)
cout << v[i] << " ";
}
제가 이 문제를 이렇게 풀었는데 이상하게 s값 (캐시 메모리의 크기) 가 10이 넘어가면 안되네요..ㅠㅠ
10보다 작으면 정상적으로 되는데.. 그래서 체점 해보면 1번2번은 맞는데 뒤에꺼는 틀리다고 하네요. 혹시 어떤게 문제인지 아시나요??..아무리 찾아도 못찾겠어요..ㅠㅠ
답변을 작성해보세요.
0
김태원
지식공유자2021.01.12
안녕하세요^^
C언어는 특성상 index out of range 에러를 알려주지 않습니다. 프로그래머 스스로 조심해야 합니다.
for(int i = s-1; i>=0; i--)
{
v[i+1] = v[i];
}
여기서 에러고 나고 있는 상황입니다. i=s-2로 하면 될 것 같습니다.
다음부터는 들여쓰기가 되어 보기 편하게 {;}버튼을 사용하여 올려주시면 감사하겠습니다.
답변 1