๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90

c8

[TIL] RB Tree ๊ตฌํ˜„ (with C) 1. RB Tree ์ƒ์„ฑํ•˜๊ธฐ RB Tree ๊ตฌ์กฐ์ฒด๋ฅผ ์ƒ์„ฑ - ์—ฌ๋Ÿฌ ๊ฐœ์˜ RB Tree๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. sentinel node(๊ฒฝ๊ณ„๋…ธ๋“œ) ์‚ฌ์šฉ - ๋ชจ๋“  nil ๋…ธ๋“œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋…ธ๋“œ //RB Tree ๊ตฌ์กฐ์ฒด ์ƒ์„ฑ rbtree *new_rbtree(void) { rbtree *p = (rbtree *)calloc(1, sizeof(rbtree)); //ํ˜„์žฌ ํŠธ๋ฆฌ์—์„œ NIL๋…ธ๋“œ๊ฐ€ ๋  ๋…ธ๋“œ ์ƒ์„ฑ //๊ฐ ํŠธ๋ฆฌ๋งˆ๋‹ค NIL๋…ธ๋“œ๋Š” 1๊ฐœ์”ฉ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. node_t *NIL = (node_t *)calloc(1, sizeof(node_t)); NIL->color = RBTREE_BLACK; p->root = NIL; p->nil = NIL; return p; } 2. RB Tree ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œํ•˜๊ธฐ RB Tre.. 2023. 5. 10.
[TIL] ๊ธฐ๊ณ„ ์ˆ˜์ค€ ํ‘œํ˜„3 + RB Tree ์‚ฝ์ž… ๊ตฌํ˜„(์ฝ”๋“œX) 1. ๊ธฐ๊ณ„ ์ˆ˜์ค€ ํ‘œํ˜„ 1. ์œ ํšจ ์ฃผ์†Œ ์ ์žฌ(Load Effective Address) leaq S, D = D โ† &S : ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ์ฝ์–ด๋“ค์ด๋Š” ์ธ์ŠคํŠธ๋Ÿญ์…˜์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ–์ง€๋งŒ, ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ „ํ˜€ ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฒซ๋ฒˆ์งธ ์˜คํผ๋žœ๋“œ(S)์˜ ์œ ํšจ ์ฃผ์†Œ๋ฅผ ๋ชฉ์ ์ง€(D)์— ๋ณต์‚ฌํ•œ๋‹ค. ํฌ์ธํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ์ผ๋ฐ˜์ ์ธ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ ์˜ˆ์‹œ ) x in %rdi, y in %rsi leaq (%rdi, %rsi, 4), %rdi //x = x + 4*y 2. ํ”„๋กœ์‹œ์ €(Procedure) procedure call ์€ ์†Œํ”„์›จ์–ด์—์„œ์˜ ์ฃผ์š” ์ถ”์ƒํ™” : ์ง€์ •๋œ ์ธ์ž๋“ค๊ณผ ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ ํŠน์ • ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ์‹ธ์ฃผ๋Š” ๋ฐฉ๋ฒ• ์ œ๊ณต ๋ฌด์Šจ ๊ฐ’์ด ๊ณ„์‚ฐ๋˜๊ณ , ์ด ํ”„๋กœ์‹œ์ €๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์ƒํƒœ์—์„œ ๋ฌด์Šจ ํšจ๊ณผ๋ฅผ.. 2023. 5. 8.
[TIL] Red-Black Tree ๊ฐœ๋…(์‚ฝ์ž…/์‚ญ์ œ) + ๊ธฐ๊ณ„ ์ˆ˜์ค€ ํ‘œํ˜„(์Šคํƒ)2 1. ๋ฌธ์ œ ํ’€์ด 1. 1874๋ฒˆ - ์Šคํƒ ์ˆ˜์—ด import sys n = int(sys.stdin.readline()) stack = [] result = '' idx = 1 flag = True for i in range(n) : num = int(sys.stdin.readline()) for j in range(idx, num+1): stack.append(j) result += '+\n' idx += 1 if num == stack[-1] : stack.pop() result += '-\n' else : flag = False break if flag : print(result) else : print('NO') ์Šคํƒ ๋ฌธ์ œ ํ’€์ด ํ’€์ด 1. ํ˜„์žฌ ์ž…๋ ฅ ๋ฐ›์€ ์ˆ˜๋ณด๋‹ค ์ž‘์œผ๋ฉด ๊ทธ ์ˆ˜๊นŒ์ง€ +, stack์— .. 2023. 5. 6.
[TIL] LinkedList & AVL Tree (with C) 1. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Linked List) ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ์™€ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ํ•œ ์ค„๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์ข…๋ฅ˜ ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๊ฐ ๋…ธ๋“œ์— data ๊ณต๊ฐ„๊ณผ ํ•œ๊ฐœ์˜ ํฌ์ธํ„ฐ ๊ณต๊ฐ„ ์กด์žฌ ํฌ์ธํ„ฐ๋Š” ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋‘๊ฐœ์˜ ํฌ์ธํ„ฐ ๊ณต๊ฐ„ ์กด์žฌ ํฌ์ธํ„ฐ๋Š” ํ˜„์žฌ ๋…ธ๋“œ์˜ ์•ž์˜ ๋…ธ๋“œ์™€ ๋’ค์˜ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ์ผ๋ฐ˜์ ์ธ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์— ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์™€ ์ฒ˜์Œ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ ์›ํ˜•์œผ๋กœ ๋งŒ๋“  ๊ตฌ์กฐ โ˜… ๋‹จ์ผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ(C์–ธ์–ด) โ˜… 1. header file - linkedlist_node.h #pragma once // ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋…ธ๋“œ typedef struct node { int data; // ๊ฐ’ ์ €์žฅ struct node.. 2023. 5. 5.
[TIL] C์–ธ์–ด ๊ณต๋ถ€ํ•˜๊ธฐ 1. ์ฝ”๋“œ refactoring 1. 12891๋ฒˆ - DNA ๋น„๋ฐ€๋ฒˆํ˜ธ import sys s, p = map(int, sys.stdin.readline().split()) dna = list(sys.stdin.readline().strip()) # A, C, G, T esssential = list(map(int, sys.stdin.readline().split())) def remove(st) : global a, c, g, t if dna[st] == 'A' : a -= 1 elif dna[st] == 'C' : c -= 1 elif dna[st] == 'G' : g -= 1 elif dna[st] == 'T' : t -= 1 return 0 def add(e) : global a, c, g, t i.. 2023. 5. 4.
[C์–ธ์–ด] ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์ •๋ฆฌ 1. ์ฃผ์„(Comment) /* ์™€ */ ๋กœ ๋ฌถ์—ฌ์ง„ ๋ถ€๋ถ„ ํ”„๋กœ๊ทธ๋žจ์ด ํ•˜๋Š” ์ผ์„ ์„ค๋ช…ํ•˜๋Š” ์„ค๋ช… ๊ธ€ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๋Š”๋‹ค. /* ํ•œ์ค„๋กœ ๋œ ์ฃผ์„ */ /* ์—ฌ๋Ÿฌ ์ค„๋กœ ๋œ ์ฃผ์„์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์ด์™€ ๊ฐ™์ด ์‚ฌ์šฉ */ // ์ด์™€ ๊ฐ™์€ ์ฃผ์„์€ "//"๋ถ€ํ„ฐ ์ด ์ค„ ๋๊นŒ์ง€ ์ฃผ์„์ด๋‹ค. 2. ์ „์ฒ˜๋ฆฌ๊ธฐ(preprocessor) #include ๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ ์ง€์‹œ์–ด(โ€ป์ฃผ์˜โ€ป # ๊ณผ include ์‚ฌ์ด์— ๊ณต๋ฐฑ์ด ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค) #include ์˜๋ฏธ : ํ—ค๋” ํŒŒ์ผ stdio.h๋ฅผ ์†Œ์Šค ์ฝ”๋“œ์— ํฌํ•จ์‹œ์ผœ๋ผ ํ—ค๋” ํŒŒ์ผ(head file) : ์ฝ”๋“œ์˜ ์ผ๋ถ€๋ถ€์ด ๋“ค์–ด์žˆ๋Š” ํ…์ŠคํŠธ ํŒŒ์ผ, .h ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง„๋‹ค. โ˜… ์ฐธ๊ณ  โ˜… stdio = standard input ouput ๋กœ ํ‘œ์ค€ ์ž…์ถœ๋ ฅ์„ ์˜๋ฏธํ•œ๋‹ค. pinrtf(.. 2023. 3. 22.
[C์–ธ์–ด] Pointer ๊ฐœ๋…์ •๋ฆฌ 1. pointer๋ž€? โ˜… ๋ฉ”๋ชจ๋ฆฌ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜ = ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜ โ˜… ๊ธฐ๊ณ„์–ด๋‚˜ ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด์ฒ˜๋Ÿผ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋‚ด์šฉ์— ์ ‘๊ทผ ๊ฐ€๋Šฅ! โ˜… ๋ฐ์ดํ„ฐ์˜ ๋ณต์‚ฌ๋ฅผ ํ”ผํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜์—ฌ ์ž‘์—…ํ•˜๊ณ ์ž ํ• ๋•Œ ์‚ฌ์šฉ 2. ์ฃผ์†Œ ์—ฐ์‚ฐ์ž & #include int main(void){ int num = 10; //์ฃผ์†Œ ์—ฐ์‚ฐ์ž & ์‚ฌ์šฉ printf("num์˜ ์ฃผ์†Œ : %u", &num); return 0; } ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ๋ณ€์ˆ˜๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์€ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ๊ถŒํ•œ์ด๊ณ  ์ปดํ“จํ„ฐ๋งˆ๋‹ค ์ฃผ์†Œ๋Š” ๋‹ฌ๋ผ์ง„๋‹ค. %p ์ฃผ์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ˜•์‹ ์ง€์ •์ž(16์ง„์ˆ˜๋กœ ์ถœ๋ ฅ) %u ๋ถ€ํ˜ธ๊ฐ€ ์—†๋Š” 10์ง„ ์ •์ˆ˜๋กœ ์ถœ๋ ฅ 3. ํฌ์ธํ„ฐ ๋ณ€์ˆ˜ ์„ ์–ธํ•˜๊ธฐ โ˜… "ํฌ์ธํ„ฐ ๋ณ€์ˆ˜" ์ฆ‰, ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์„ ์–ธ๋˜์–ด์•ผ ํ•œ๋‹ค. โ˜… ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€.. 2023. 3. 14.
[C์–ธ์–ด] MAC์—์„œ Visual Stdio Code๋กœ C์–ธ์–ด ์‹คํ–‰ํ•˜๊ธฐ 1. Visual Stdio Code - mac ์ „์šฉ์œผ๋กœ ์„ค์น˜ https://code.visualstudio.com/download Download Visual Studio Code - Mac, Linux, Windows Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications. code.visualstudio.com 2. ํ™•์žฅํŒฉ ์„ค์น˜ 3. ์ปดํŒŒ์ผ๋Ÿฌ.. 2023. 3. 13.
728x90