본문 바로가기
코드업(codeup)/C

[코드업(codeup)/C]코드업(codeup) 1430 : 기억력 테스트 2 C언어

by starfish22 2022. 1. 10.
728x90

▶문제 : 기억력 테스트 2 (codeup.kr)

 

기억력 테스트 2

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

codeup.kr

 

▶코드 작성

#include <stdio.h>

int arr[10000001];
int num[100001];

int main()
{
    int n, m, temp;

    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &temp);//temp변수에 입력
        arr[temp] = 1;//배열에서 temp자리를 1 대입
    }

    scanf("%d", &m);
    for (int i = 0; i < m; i++) {
        scanf("%d", &temp);//temp변수에 입력
        if (arr[temp] == 1) num[i] = 1;//arr배열 temp자리가 1일 때 수가 있으므로 num[i]에 1 대입
        else num[i] = 0;//arr배열 temp자리가 0일 때 수가 없으므로 num[i]에 0 대입
    }

    for (int i = 0; i < m; i++) {
        printf("%d ", num[i]);
    }

    return 0;
}

 

▶해석

입력받은 수를 배열의 자리라고 생각하여 배열 arr [입력받은 수 temp]에 1을 넣으면 temp이 존재한다는 것을 알 수 있다. 질문하는 수를 temp에 입력받으면서 arr [temp]이 1이면 temp값이 존재한다는 의미이므로 1을 출력하도록 num [i]에 1을 넣고 아니면 0을 넣어서 마지막에 num배열을 출력해준다.

728x90

댓글