Algorithm/Do it

[자료구조와 함께 배우는 알고리즘 입문 - C언어 편] 3장 검색 연습문제 Q3 답안 p.115

Bonita SY 2019. 10. 16. 21:28
728x90
반응형

Q3. 요소의 개수가 n인 배열 a에서 key와 일치하는 모든 요소의 인덱스를 배열 idx의 맨 앞부터 순서대로 저장하고, 일치한 요소의 개수를 반환하는 함수를 작성하세요. 예를 들어, 요소의 개수가 8인 배열 a의 요소가 {1, 8, 2, 8, 4, 6, 7, 9 } 이고 key가 9면 배열 idx에 {1, 3, 7 }을 저장하고 3을 반환합니다.

int search_idx(const int a[], int n, int key, int idx[]);


답안)

#include <stdio.h>
#include <stdlib.h>

int search_idx(const int a[], int n, int key, int idx[]) {
  int i = 0;
  int j = 0;
  for(i; i<n; i++) {
    if(a[i] == key) {
      idx[j++] = i;
    }
  }
  return &idx;
}

int main(void) {
  int i, nx, ky, idx;
  int *x;
  int *y;
  puts("선형 검색");
  printf("요소 개수 : ");
  scanf("%d", &nx);
  x = calloc(nx, sizeof(int));
  for(i=0; i<nx; i++) {
    printf("x[%d] : ", i);
    scanf("%d", &x[i]);
  }
  printf("검색값 : ");
  scanf("%d", &ky);
  y = search_idx(x, nx, ky, y);
  printf("%d\n", sizeof(y)/sizeof(y[0]));
  free(x);
  return 0;
}

실행결과)

sy@sy:~/algorithm/doit/chap03$ ./q3
선형 검색
요소 개수 : 7
x[0] : 6
x[1] : 4
x[2] : 3
x[3] : 2
x[4] : 1
x[5] : 4
x[6] : 3
검색값 : 3
2
728x90
반응형