문제1340--[탐색] 순차 탐색

1340: [탐색] 순차 탐색

[만든사람 : 2015 개정 교육과정 고등학교 정보과학 (주)삼양미디어]
시간제한 : 1.000 sec  메모리제한 : 128 MiB

문제 설명

정보과학 교과서 167p
----

순차 탐색(sequential search)은 원하는 데이터를 찾기 위해서, 

첫 번째 데이터부터 시작해서 마지막 데이터까지 순서대로 비교하며 찾는 탐색 방법이다.


정렬되어있지 않은 n개의 정수 데이터를 입력받아,

원하는 데이터가 저장된 위치를 찾는 순차탐색 프로그램을 작성해보자.
단, find() 등을 사용할 수 없다.


#include <stdio.h>

int n, d[3010], k, q, x;

int complete_search(int x)
{
  for(int i=1; i<=n; i++)
    if(d[i] == x)              //x가 저장되어있는 위치를 찾으면 그 위치를 리턴
      return i;
  
  return -1;                    //데이터가 없는 경우 -1 리턴
}

int main()
{
  scanf("%d", &n);           //데이터 개수 입력

  for(int i=1; i<=n; i++)  //데이터 입력
    scanf("%d", &d[i]);

  scanf("%d", &q);          //쿼리 개수 입력 

  for(int i=1; i<=q; i++)
  {
    scanf("%d", &k);
    printf("%d\n", complete_search(k));  //순차 탐색
  }
}

입력 설명

첫 번째 줄에 데이터의 개수(n)가 입력된다.
두 번째 줄에는 서로 다른 n개의 정수 데이터(k)가 스페이스를 사이에 두고 한 줄로 입력된다.
세 번째 줄에는 쿼리 개수(q)가 입력된다.
네 번째 줄부터 q개의 줄에 거쳐, 위치를 찾아야하는 데이터(x)가 한 줄에 1개씩 입력된다.
[1 <= n <= 3000]
[0 <= k <= 100000]
[1 <= q <= 3000]
[0 <= x <= 100000]

출력 설명

q개의 데이터 x가 저장되어있는 위치를 한 줄에 1개씩 출력한다.
데이터 x를 찾을 수 없는 경우에는 -1을 출력한다.

입력 예시 Copy

5
9 8 3 4 7
3
8
7
2

출력 예시 Copy

2
5
-1

출처/분류