[CS] 선형검색 실습

hee.moon·2022년 10월 23일
0

Computer Science

목록 보기
13/15
post-thumbnail
/* 모두를 위한 컴퓨터 과학(CS50 2019) 정리본입니다. */

1. 배열에서 50 찾기


// numbers.c

#include <cs50.h>
#include <stdio.h>

int main(void)
{
    int numbers[6] = {4, 8, 15, 16, 23, 42};
    
    for (int i = 0; i < 6; i++)
    {
    	if (numbers[i] == 50)
        {
        	printf("Found\n");
        }
    }
    printf("Not found\n");
}

결과는 배열에 50이 없기 때문에 Not found로 잘 나온다. C에서는 JS와 다르게 배열을 중괄호를 사용하여 표시한다. int numbers[6] = {4, 8, 15, 16, 23, 42};는 숫자 6개의 배열을 선언 및 정적으로 초기화한다.


2. EMMA 찾기


// names.c

#include <cs50.h>
#include <stdio.h>
#include <string.h>

int main(void)
{
    string names[4] = {"EMMA", "RODRIGO", "BRIAN", "DAVID"};

    for (int i = 0; i < 4; i++)
    {
        if (strcmp(names[i], "EMMA") == 0)
        {
            printf("Found\n");
            return 0;
        }
    }
    printf("Not found\n");
    return 1;
}

for 문 안에 있는 조건문의 경우, names[i] == "EMMA"를 사용하면 될 것 같지만, C에서는 ==를 문자열에서 사용할 수 없으므로 strcmp 함수를 써줘야 한다. strcmp 함수는 string compare이라는 의미의 함수이고 문자열이 같으면 0을 반환한다.


3. EMMA의 전화번호 찾기


#include <cs50.h>
#include <stdio.h>
#include <string.h>

typedef struct 
{ 
    string name;
    string number;
}
person;

int main(void)
{
    // person은 자료형, people은 배열의 이름이다.
    person people[4];

    people[0].name = "EMMA";
    people[0].number = "617-555-0100";

    people[1].name = "RODRIGO";
    people[1].number = "617-555-0101";

    people[2].name = "BRIAN";
    people[2].number = "617-555-0102";

    people[3].name = "DAVID";
    people[3].number = "617-555-0103";

    for (int i = 0; i < 4; i++) 
    {
        if (strcmp(people[i].name, "EMMA") == 0)
        {
            printf("%s\n", people[i].number);
            return 0;
        }
    }
    printf("Not found\n");
    return 1;
}

이름과 전화번호를 캡슐화하기 위해 typedef라는 키워드를 사용할 수 있다. typedef는 새로운 데이터 타입을 정의한다. struct는 C에 미리 정의된 키워드로, 여러 자료형을 여기에 담을 수 있다.

typedef struct
{ // 데이터 캡슐
    string name;
    string number;
}
person; // person이라는 자료형이 있다는 것을 clang에게 알려준다.

profile
Frontend Engineer

0개의 댓글

관련 채용 정보