작성
·
462
·
수정됨
0
안녕하세요 수업 열심히 듣고 따라가는 학생입니다!
37번 문항에 질문 및 문제가 생겨 문의드립니다.
아래와 같은 코드를 작성했고, 이를 실행 후 채점폴더를 활용해 채점했을때 test 3,4,5번에서 exit_code 에러가 발생합니다.
#include <iostream>
using namespace std;
int scan(int n, int* arr, int len);
int main() {
int S;
int N;
int scanres;
cin >> S >> N;
int* cache = new int[S]();
int* work = new int[N];
for(int i = 0; i<N; i++){
cin >> work[i];
}
cache[0] = work[0];
for(int i = 1; i<N; i++){
scanres = scan(work[i], cache, S);
if(scanres != -1){
//캐시에 있다
for(int j = scanres - 1; j >= 0; j--){
cache[j+1] = cache[j];
}
cache[0] = work[i];
}
else{
//캐시에 없다
for(int j = S-1; j >= 0; j--){
cache[j+1] = cache[j];
}
cache[0] = work[i];
}
}
for(int i = 0; i<S; i++){
cout << cache[i] << " ";
}
return 0;
}
int scan(int n, int* arr, int len){
for(int i = 0; i < len; i++){
if(arr[i] == n)
return i;
}
return -1;
}
아무리 봐도 문제를 모르겠어 input 3,4,5를 열고 제 코드에 대입해 실행해본 결과 output 3,4,5와 일치하는 결과가 출력되었습니다.
아래 그림에서 왼쪽은 채점프로그램 점수이고, 오른쪽 위는 input 3 프로그램 실행시 결과, 그 아래는 output 3 파일입니다. input3 실행결과와 output3 결과가 일치하는것을 확인하실 수 있습니다.
어느부분에서 에러가 나는 것인지 조언 부탁드리겠습니다.
답변 1
0
안녕하세요^^
캐시에 없을 때 index out of range 에러가 납니다. C++이 index out of range 에러를 그냥 넘어가서 그렇지 다른 언어였다면 에러가 나는 코드입니다.
for(int j = S-1; j >= 1; j--){
cache[j] = cache[j-1];
}
위와 같이 고치면 됩니다.