1383: [탐색] 순차 탐색
[만든사람 : 2015 개정 교육과정 고등학교 정보과학 (주)삼양미디어]
문제 설명
정보과학 교과서 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)); //순차 탐색
}
}
----
순차 탐색(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]
두 번째 줄에는 서로 다른 n개의 정수 데이터(k)가 스페이스를 사이에 두고 한 줄로 입력된다.
세 번째 줄에는 쿼리 개수(q)가 입력된다.
네 번째 줄부터 q개의 줄에 거쳐, 위치를 찾아야하는 데이터(x)가 한 줄에 1개씩 입력된다.
[1 <= n <= 3000]
[0 <= k <= 100000]
[1 <= q <= 3000]
[0 <= x <= 100000]
출력 설명
q개의 데이터 x가 저장되어있는 위치를 한 줄에 1개씩 출력한다.
데이터 x를 찾을 수 없는 경우에는 -1을 출력한다.
데이터 x를 찾을 수 없는 경우에는 -1을 출력한다.
입력 예시 Copy
5
9 8 3 4 7
3
8
7
2
출력 예시 Copy
2
5
-1