728x90
반응형

문제 : https://codeup.kr/problem.php?id=1430

 

기억력 테스트 2

첫째줄에 N이 입력된다. (1 <= N <= 10,000,000) 둘째 줄에 N개의 숫자가 공백으로 구분되어 차례대로 입력된다. ( 데이터값의 범위 : 1 ~ 10,000,000) 셋째줄에 질문의 수 M이 입력된다. ( 1 <= M <= 100,000) 넷째

codeup.kr

문제 설명

주현이 엄마는 주현이를 영재로 키우기 위해 매일 혹독한 기억력 테스트를 하고 있다.

N개의 숫자를 먼저 말해주고, M개의 질문을 하면서 그 숫자가 있었는지 없었는지 테스트한다.

만약 있었다면 1을 출력하고, 없었다면 0을 출력한다.

이번에는 주현이가 좋아하는 3단 합체 변신로봇 '또봇 트라이탄'이 선물로 걸려있다.

주현이를 도와 줄수 있는 프로그램을 만드시오.

 

 

[그림1] 입 출력 형식
[그림2 입 출력 예제

 

전역변수 사용 코드

# include <stdio.h>

int arr[10000000]={0,};

int main()
{		
	int i,number,n,m;
	
	scanf("%d",&n);
	
	for(i = 0; i<n; i++)
	{
		scanf("%d",&number);
		arr[number] = 1;
	}
	
	scanf("%d",&m);
	
	for(i = 0; i<m; i++)
	{
		scanf("%d",&number);
		printf("%d ",arr[number]);
	
	}

	return 0;
}

 

동적할당으로 풀다 에러 틀린 코드

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

int main()
{		
	int i,number,n,m;
	
	scanf("%d",&n);
	int *arr1;
	int *arr2;
	arr1 = (int*)calloc(n,sizeof(int));
	
	
	for(i = 0; i<n; i++)
	{
		scanf("%d",&number);
		arr1[number] = 1;
	}
	
	scanf("%d",&m);
	
	arr2 = (int*)calloc(m,sizeof(int)); 
	
	for(i = 0; i<m; i++)
	{
		scanf("%d",&number);
		arr2[numer] = 1;
		
		if(arr1[number] == arr2[number])
			printf("1 ");
		else
			printf("0 ");
	}
	
	free(arr1);
	free(arr2);
	
	return 0;
}
728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기