๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๋ถ€์ŠคํŠธ์ฝ”์Šค CS50 ์ฝ”์นญ์Šคํ„ฐ๋”” 2๊ธฐ 6์ฃผ์ฐจ

์ด์€๋นˆ EUNBINยท2021๋…„ 3์›” 15์ผ
0
post-thumbnail

๋ถ€์ŠคํŠธ์ฝ”์Šค CS50 ์ฝ”์นญ์Šคํ„ฐ๋”” ๋งˆ์ง€๋ง‰ 6์ฃผ์ฐจ ์ฃผ์ œ '์ž๋ฃŒ๊ตฌ์กฐ' ๐Ÿ‘€

๋’ค๋Šฆ์€ 6์ฃผ์ฐจ ํšŒ๊ณ ๋ก์ด์ง€๋งŒ
6์ฃผ์ฐจ ์ •๋ง ์ˆœ์‹๊ฐ„์— ์ง€๋‚˜๊ฐ„ ๊ฑฐ ๊ฐ™์•˜๋‹ค...!




๐Ÿ“Œ 6์ฃผ์ฐจ ์ž๋ฃŒ๊ตฌ์กฐ

realloc() : ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ƒˆ๋กœ ํ• ๋‹น ex. realloc(list, 4 * sizeof (int));
list : ์ด๋ฏธ ํ• ๋‹น๋ฐ›์€ ๊ธฐ์กด ๋ฉ”๋ชจ๋ฆฌ ๋ฉ์–ด๋ฆฌ๋ฅผ ์ƒˆ๋กญ๊ฒŒ ๊ฐ€์ ธ์™€์„œ
4 * sizeof(int) : ์ƒˆ๋กœ์šด ํฌ๊ธฐ๋กœ ์žฌํ• ๋‹น

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(linked list) : ๋ฉ”๋ชจ๋ฆฌ ๋ฉ์–ด๋ฆฌ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ํฌํ•จํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ
ํ•ด์‹œ ํ…Œ์ด๋ธ” : ๋ฐฐ์—ด + ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
ํ(Queue) : ์„ ์ž…์„ ์ถœ(FIFO) - enqueue, dequeue
์Šคํƒ(Stack) : ํ›„์ž…์„ ์ถœ(LIFO) - push, pop
๋”•์…”๋„ˆ๋ฆฌ(Dictionary) : ํ‚ค-๊ฐ’, ๋‹จ์–ด-๊ฐ’, ๋‹จ์–ด-ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ ๋“ฑ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ



๐Ÿ“Œ 6์ฃผ์ฐจ ํŒ€๋ฏธ์…˜

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

typedef struct stack{
    int top;
    int capacity;
    int* array;
} Stack;

Stack* createStack(int capacity) {
    Stack* stack = (Stack*)malloc(sizeof(Stack));
    stack->capacity = capacity;
    stack->top = -1;
    stack->array = (int *)malloc(stack->capacity*sizeof(int));
    return stack;
}

// [์Šคํƒ์ด ํฌํ™” ์ƒํƒœ์ธ์ง€ ๊ฒ€์‚ฌ]
int isFull(Stack* stack) {
    return stack->top == stack->capacity-1;
}

// [์Šคํƒ์ด ๊ณต๋ฐฑ ์ƒํƒœ์ธ์ง€ ๊ฒ€์‚ฌ]
int isEmpty(Stack* stack) {
    return stack->top == -1;
}

// [์Šคํƒ์ด full์ด ์•„๋‹ ๋•Œ data๋ฅผ ์Šคํƒ์— ์‚ฝ์ž…]
void push(Stack* stack, int item) {
    if (isFull(stack))
        return;
    stack->array[++stack->top] = item;
    printf("%d pushed to stack\n", item);
}

// [์Šคํƒ์ด empty๊ฐ€ ์•„๋‹ ๋•Œ top์˜ data๋ฅผ ๋ฐ˜ํ™˜ ํ›„ ์ œ๊ฑฐ]
int pop(Stack* stack) {
    if(isEmpty(stack)) {
        return 1;
    }
    return stack->array[stack->top--];
}

// [์Šคํƒ์ด empty๊ฐ€ ์•„๋‹ ๋•Œ top์˜ data๋ฅผ ๋ฐ˜ํ™˜]
int peek(Stack* stack) {
    if(isEmpty(stack)) {
        return 1;
    }
    return stack->array[stack->top];
}

int main() {
    Stack* stack = createStack(100);

    push(stack, 10);
    push(stack, 20);
    push(stack, 30);
    push(stack, 40);

    printf("%d pop from stack\n", pop(stack));
    printf("%d pop from stack\n", pop(stack));

    push(stack, 50);
    printf("%d pop from stack\n", pop(stack));
    printf("%d pop from stack\n", pop(stack));
    printf("%d pop from stack\n", pop(stack));
    printf("%d pop from stack\n", pop(stack));
    return 0;
}


๐Ÿ“Œ 6์ฃผ์ฐจ ๋ผ์ด๋ธŒ ๊ฐ•์˜

๋งˆ์ง€๋ง‰ ๋ถ€์ŠคํŠธ์ฝ”์Šค ๋ผ์ด๋ธŒ ๊ฐ•์˜,,,,
๋‹ค๋ฅธ ๋ถ„๋“ค ์งˆ๋ฌธ ๋ณด๋ฉด์„œ ๋‹ค๋“ค ๋น„์Šทํ•˜๊ตฌ๋‚˜ ์‹ถ๊ธฐ๋„ ํ•˜๊ณ 
๋” ์—ด์‹ฌํžˆ ํ•ด์•ผ ๊ฒ ๋‹ค๋Š” ์ž๊ทน๋„ ๋ฐ›๊ณ  ์ด๋ž˜์ €๋ž˜ ๋™๊ธฐ๋ถ€์—ฌ๊ฐ€ ๋˜์—ˆ๋‹ค

์ฝ”์นญ์Šคํ„ฐ๋””์˜ ํ˜„์ง์ž๋ถ„๋“ค์ด ๋ผ์ด๋ธŒํ•ด์ฃผ์‹ค ๋•Œ
๋งค๋ฒˆ ๊ฒธ์†ํ•œ ์ž์„ธ์™€ ๊ฒฉ๋ ค์˜ ํƒœ๋„๋กœ ์ž„ํ•ด์ฃผ์…”์„œ ์ฐธ ๊ฐ์‚ฌํ–ˆ๋‹ค๐Ÿ™๐Ÿป



๐Ÿ“Œ 6์ฃผ์ฐจ ํ›„๊ธฐ

์ง„ํ–‰ ์ค‘์ธ ์Šคํ„ฐ๋””๋กœ ์ •์‹ ์ด ์—†์–ด ์ด์ œ์•ผ 6์ฃผ์ฐจ ํ›„๊ธฐ๋ฅผ ์˜ฌ๋ฆฐ๋‹ค๐Ÿคฆโ€โ™€๏ธ
๊ฐ•์˜ ์—ด์‹ฌํžˆ ๋“ค์—ˆ์—ˆ๋Š”๋ฐ ๋ฒŒ์จ ๊ฐ€๋ฌผ๊ฐ€๋ฌผ...๐Ÿ’ฆ

๋ถ€์ŠคํŠธ์ฝ”์Šค๋ฅผ ํ†ตํ•ด C์–ธ์–ด๋ฅผ ์ ‘ํ•˜๊ธธ ์ฐธ ๋‹คํ–‰์ด๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋งŒ ๋ณด๋‹ค๊ฐ€ C์–ธ์–ด ๋ณด๋‹ˆ๊นŒ ๋„ˆ๋ฌด ์–ด๋ ค์› ๋Š”๋ฐ
๋ถ€์ŠคํŠธ์ฝ”์Šค ๊ฐ•์˜ ๋•๋ถ„์— ๊ทธ๋‚˜๋งˆ ์ข€ ์‰ฝ๊ฒŒ(?) ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค..!


๊ฐˆ ๊ธธ์ด ๋ฉ€์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋‚˜์”ฉ ์ฐจ๊ทผ์ฐจ๊ทผ ํ•˜๋‹ค๋ณด๋ฉด
๋‚˜๋„ ์–ด๋Š๋‚  ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด ์žˆ๊ฒ ์ง€!!!!๐Ÿ”ฅ

๊ทธ๋™์•ˆ ๋ชจ๋‘ ์ˆ˜๊ณ ํ•˜์…จ์Šต๋‹ˆ๋‹ค :D



profile
Frontend Engineer & Value Creator

1๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2022๋…„ 3์›” 6์ผ

๋ถ€์ŠคํŠธ์ฝ”์Šค CS50 ์ข‹์€๊ฑฐ ์•Œ์•„ ๊ฐ‘๋‹ˆ๋‹ค. ์ €๋„ C์–ธ์–ด ํ•œ๋ฒˆ ๋ณผ๊นŒ ์ƒ๊ฐ์ค‘
์ € ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋‹ค ๊ตฌํ˜„ํ•˜๋Š” ๊ฑด๊ฐ€์š”???? ์ˆ˜๋ฃŒํ•˜๊ธฐ ๋นก์‹œ๊ฒ ๋„ค์š”;;;;

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ