모두CBT

다음은 입력 배열 데이터 data 내에 찾고자 하는 값 key와 같은 … | [7급 국가직 자료구조론] 26년 1회차 기출문제 상세 페이지

1[7급 국가직 자료구조론] 26년 1회차
다음은 입력 배열 데이터 data 내에 찾고자 하는 값 key와 같은 값이 저장된 모든 배열 원소의 인덱스를 배열로 반환하는 search 함수를 포함한 Java 프로그램이다. 출력 결과가 (12:2,13:0,23:3,43:1)인 프로그램의 실행에 대한 설명으로 옳은 것만을 모두 고르면?
public class SearchAlgorithm {
private static int[] index_list;
private static int size;
private static void reset() {
index_list = new int[1];
size = 0;
}
private static void resize(int newsize) {
int[] nlist = new int[newsize];
for(int i = 0; i < size; i++)
nlist[i] = index_list[i];
index_list = nlist;
}
private static void insert_index(int index) {
if(size == index_list.length) resize(2 * size);
index_list[[ (가) ]] = index;
}
public static int[] search(int[] data, int key) {
[ (나) ];
for(int i = 0; i < data.length; i++)
if(data[i] == key) insert_index(i);
int[] result_list = new int[size];
for(int i = 0; i < result_list.length; i++)
result_list[i] = index_list[i];
return result_list;
}
public static void main(String[] args) {
int[] data = {12, 45, 23, 43, 23, 54, 12, 23};
int[] keys = {12, 13, 23, 43};
String index_f = "(";
for(int i = 0; i < keys.length; i++) {
int key = keys[i];
int[] indexs = search(data, key);
index_f += key + ":" + indexs.length;
if(i != keys.length - 1) index_f += ",";
}
System.out.println(index_f + ")");
return;
}
}
ㄱ. (가)에 들어갈 내용은 ++size이다.
ㄴ. (나)에 들어갈 내용은 reset()이다.
ㄷ. 프로그램을 실행하는 동안 resize 함수의 총호출 횟수는 4회이다.
ㄹ. 프로그램을 실행하는 동안 insert_index 함수의 총호출 횟수는 6회이다.
1
ㄱ, ㄷ
2
ㄴ, ㄷ
3
ㄴ, ㄹ
4
ㄱ, ㄴ, ㄹ
해설

옳은 것은 ㄴ, ㄹ이다.

search마다 reset()으로 길이 1 배열·size 0에서 시작하고, insert_index는 index_list[size++]에 저장해야 한다. 키별 일치 개수는 12가 2개, 13이 0개, 23이 3개, 43이 1개다.

  • ㄱ: ++size이면 첫 삽입부터 index_list[1]에 접근해 범위를 벗어나므로 (가)는 size++여야 한다(틀림).
  • ㄴ: 키마다 결과를 새로 모으려면 탐색 전에 reset()이 필요하다(옳음).
  • ㄷ: resize는 키 12에서 1회(길이 1→2), 키 23에서 2회(1→2, 2→4)로 총 3회다(틀림).
  • ㄹ: insert_index는 일치 개수의 합 2+0+3+1=6회 호출된다(옳음).

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[7급 국가직 자료구조론] 26년 1회차 25문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요7급 국가직 자료구조론 기출문제 암기장 전체 보기