- BFS
- DP
- Python
- μΉ΄μΉ΄μ€2021
- C++
- λ°±μ€
- μΉλ¦°μ΄
- λΉνΈλ§΅
- js
- Union-Find
- νΈλ¦¬
- LCs
- DFS
- λμ νλ‘κ·Έλλ°
- νλ‘κ·Έλλ¨Έμ€
- μ΄λΆνμ
- μν°λ
- κ°μ₯κ°κΉμ΄κ³΅ν΅μ‘°μ
- μκ³ λ¦¬μ¦
- golang
- μμ½λ
- μ¬λΌμ΄λ© μλμ°
- λ°±μλ ν리μ¨λ³΄λ©
- λΉνΈλ§μ€νΉ
- λ€μ΅μ€νΈλΌ
- go
- μ¬κ·
- ν리μ¨λ³΄λ©
- μΉ΄μΉ΄μ€ μ½ν
- nestjs
- Today
- Total
Hello Ocean! πΌ
[μκ³ λ¦¬μ¦ μ€ν°λ] μλ£κ΅¬μ‘°_1 λ³Έλ¬Έ
- λ°°μ΄
-
μ μ λ°°μ΄
μ°λ¦¬κ° μκ°νλ μΌλ°μ μΈ λ°°μ΄. ν¬κΈ°κ° κ³ μ λμ΄ μλ€.
-
λμ λ°°μ΄ (vector)
μ€κ°μ κ°μ μΆκ°νκ±°λ μμ ν μ μλ€.
https://blockdmask.tistory.com/70
μ΄ λ§ν¬μμ λ°°μ΄μ μ¬μ©λ²μ μμΈνκ² λ°°μΈ μ μλ€.
-
λ¬Έμμ΄
-
λ°°μ΄
- μ¬λ¬ κΈμλ‘ μ΄λ£¨μ΄μ§ λ¬Έμ κ·Έλ£Ήμ νλμ μλ£λ‘ μ·¨κΈνμ¬ λ©λͺ¨λ¦¬μ μ°μμ μΌλ‘ μ μ₯νλ μλ£ νμ.
https://blockdmask.tistory.com/338
- μ¬λ¬ κΈμλ‘ μ΄λ£¨μ΄μ§ λ¬Έμ κ·Έλ£Ήμ νλμ μλ£λ‘ μ·¨κΈνμ¬ λ©λͺ¨λ¦¬μ μ°μμ μΌλ‘ μ μ₯νλ μλ£ νμ.
-
μ°κ²°λ¦¬μ€νΈ
-
μ°κ²° μλ£κ΅¬μ‘°λ μμ°¨ μλ£κ΅¬μ‘° (exλ°°μ΄)κ³Ό λ¬λ¦¬ μμμ λ Όλ¦¬μ μΈ μμμ 물리μ μΈ μμκ° μΌμΉνμ§ μμλ λλ€.
-
μ°μν 물리주μμ μν΄ μμ μμλ₯Ό νννλ κ²μ΄ μλλΌ, κ° μμμ μ μ₯λμ΄ μλ λ€μ μμμ μ£Όμ(λ§ν¬)μ μν΄ μμκ° μ°κ²°λλ ꡬν λ°©μμ΄κΈ° λλ¬Έμ΄λ€.
-
λ Έλ λ¨μλ‘ λ©λͺ¨λ¦¬κ° ν λΉλλ©°, μ½μ λ° μμ μ°μ° ν λ Όλ¦¬μ μΈ μμκ° λ³κ²½λμ΄λ κ° λ Έλμ λ§ν¬μ λ³΄λ§ λ³κ²½λκ³ λ¬Όλ¦¬μ μΈ μμΉλ λ³κ²½λμ§ μλλ€.
-
ν¬μΈν°(λ§ν¬)λ₯Ό λ΄μ 곡κ°μ΄ μΆκ°μ μΌλ‘ νμν λμ μ, μ½μ μμ μ°μ°μμ 물리μ μμλ₯Ό λ§μΆλ €λ μ€λ²ν€λκ° λ°μνμ§ μλλ€.
-
μ°κ²° μλ£κ΅¬μ‘°μ λ Έλ
<λ°μ΄ν°, λ€μ μμμ μ£Όμ>
-
λ¨μμ°κ²°λ¦¬μ€νΈ
#include <stdio.h>
#include <stdlib.h>
typedef int element;
typedef struct ListNode{
element data;
struct ListNode *link;
}ListNode;
void remove_node(ListNode **phead, ListNode *p, ListNode *removed)
{
if(p==NULL)
*phead = (*phead)->link;
else
p->link = removed->link;
free(removed);
}
void insert_node(ListNode **phead, ListNode *p, ListNode *new_node)//phead ν€λν¬μΈν°λ₯Ό κ°λ₯΄ν€λ ν¬μΈν°, p μ½μ
ν κ³³μ μ ν λ
Έλ, new_node μ½μ
λ λ
Έλ
{
if((*phead)==NULL)
{
new_node->link = NULL;
*phead = new_node;
}
else if(p==NULL)
{
new_node->link = *phead;
*phead = new_node;
}
else
{
new_node->link = p->link;
p->link = new_node;
}
}
void display(ListNode *head)
{
ListNode *p = head;
while (p!=NULL)
{
printf("%d->",p->data);
p = p->link;
}
printf("\n");
}
ListNode* create_node(element data, ListNode *link)
{
ListNode *new_node;
new_node = (ListNode*)malloc(sizeof(ListNode));
new_node->data = data;
new_node->link = link;
return new_node;
}
int main(void)
{
ListNode *head = NULL;
ListNode *p;
insert_node(&head, NULL, create_node(10,NULL));
insert_node(&head, NULL, create_node(20,NULL));
insert_node(&head, head, create_node(30,NULL));
display(head);
//remove_node(&head,NULL,head);
display(head);
return 0;
}
μνμ°κ²°λ¦¬μ€νΈ
#include <stdio.h>
typedef int element;
typedef struct DlistNode {
element data;
struct DlistNode *llink;
struct DlistNode *rlink;
}DlistNode;
void init(DlistNode *phead) {
phead->llink=phead;
phead->rlink=phead;
}
void display(DlistNode *phead) {
DlistNode *p;
for(p=phead->rlink; p!=phead; p=p->rlink)
printf("<--| %x | %d | %x |-->\n",p->llink, p->data, p->rlink);
printf("\n");
}
void dinsert_node(DlistNode *before,DlistNode *new_node) {
new_node->llink = before;
new_node->rlink = before->rlink;
before->rlink->llink = new_node;
before->rlink=new_node;
}
void dremove_node(DlistNode *phead_node, DlistNode *removed) {
if (removed == phead_node) return;
removed->llink->rlink=removed->rlink;
removed->rlink->llink=removed->llink;
free(removed);
}
int main(void) {
DlistNode head_node;
DlistNode *p[10];
init(&head_node);
int i;
for(i=0;i<5;i++) {
p[i] = (DlistNode *)malloc(sizeof(DlistNode));
p[i]->data = i;
dinsert_node(&head_node, p[i]);
}
dremove_node(&head_node, p[3]);
display(&head_node);
return 0;
}
- μ€ν
- μ μλ₯Ό μμ μ¬λ¦¬λ― λ°μ΄ν°λ₯Ό 차곑차곑 μμμ¬λ¦° ννλ‘ μλ£λ₯Ό ꡬμ±νλ λ°©μμ΄λ€.
- κ°μ ꡬ쑰μ κ°μ ν¬κΈ°μ λ°μ΄ν°λ₯Ό μ ν΄μ§ λ°©ν₯μΌλ‘λ§ μμ μ μκ³ , topμΌλ‘ μ ν ν κ³³μΌλ‘λ§ μ κ·Όνλλ‘ μ νλμ΄ μλ€.
- topμ μ½μ κ³Ό μμ κ° μΌμ΄λλ μμΉλ‘, νμ¬ μ€νμ κ°μ₯ μμ μλ λ°μ΄ν°μ μμΉκ° λλ€.
- μ½μ
top μμΉμ μλ λ°μ΄ν° μμ μλ‘μ΄ λ°μ΄ν°κ° μμ΄κ² λλ€. λ°λΌμ topμ μλ‘ μ½μ λ λ°μ΄ν°μ μμΉλ‘ κ°±μ λλ€. - μμ
top μμΉμ μλ λ°μ΄ν°κ° μμ λλ€. λ°λΌμ topμ top λ°λ‘ μλμ μμΉν λ°μ΄ν°μ μμΉλ‘ κ°±μ λλ€
κ°μ₯ λ§μ§λ§μ μ½μ λ λ°μ΄ν°κ° κ°μ₯ λ¨Όμ μμ λλ€ (LIFO)
λ§ν¬λ₯Ό μ΄μ©ν΄ ꡬνν μ€ν
#include <stdio.h>
typedef int element;
typedef struct StackNode {
element item;
struct StackNode *link;
}StackNode;
typedef struct{ //λ©μΈν¨μμ ν μ μΈν΄λλμ§λ§ μ€νμ¬λ¬κ°μΈκ²½μ° λλ¬Έμμ
StackNode *top;
}StackType;
void init(StackType *s) {
s->top=NULL;
}
int is_empty(StackType *s) {
return (s->top==NULL);
}
void push(StackType *s, element item) { //μ½μ
StackNode *temp = (StackNode *)malloc(sizeof(StackNode));
temp->item=item;
temp->link=s->top;
s->top=temp;
}
int pop(StackType *s) { //μμ
if(is_empty(s)) {
printf("μ€νμ΄ λΉμ΄μμ\n");
exit(1);
}
else {
StackNode *temp=s->top;
int item=temp->item;
s->top =s->top->link;
free(temp);
return item;
}
}
int main(void) {
StackType s;
init(&s);
push(&s,10);
push(&s,20);
push(&s,30);
printf("%d\n",pop(&s));
printf("%d\n",pop(&s));
printf("%d\n",pop(&s));
printf("is_empty:%d\n",is_empty(&s));
return 0;
}
- ν
μ½μ μμ μ μμΉμ λ°©λ²μ΄ μ νλ μ ν μμ 리μ€νΈλΌλ μ μ μ€νκ³Όμ 곡ν΅μ μ΄μ§λ§, 리μ€νΈμ νμͺ½ λμμλ μ½μ λ§, λ°λμͺ½ λμμλ μμ μμ λ§ μ΄λ£¨μ΄μ§λ€λ κ²μ΄ μ€νκ³Ό λ€λ₯΄λ€.
μνμμ λ²νΈνλ₯Ό λ½μ μ€μ μλ λ°©μκ³Ό λΉμ·νλ€. λ¨Όμ μ½μ λ λ°μ΄ν°κ° λ¨Όμ μμ λλ (FIFO) κ΅¬μ‘°λ‘ μ΄μλλ€.
νμͺ½ λμ front(머리), λ€λ₯Έμͺ½ λμ rear or tail (꼬리)λ‘ μ νμ¬ λ¨Έλ¦¬μμλ μμ λ§, 꼬리μμλ μ½μ μ°μ°λ§ μνν μ μλ€.
#include <stdio.h>
#include <stdlib.h>
typedef int element;
typedef struct QueueNode {
element item;
struct QueueNode *link;
}QueueNode;
typedef struct {
QueueNode *front,*back;
}QueueType;
void init(QueueType *q) {
q->front=q->back=NULL;
}
int is_empty(QueueType *q) {
return(q->front==NULL);
}
void enqueue(QueueType *q,element item) {
QueueNode *temp=(QueueNode*)malloc(sizeof(QueueNode));
if(temp==NULL) printf("λ©λͺ¨λ¦¬λ₯Ό ν λΉν μ μμ΅λλ€.");
else {
temp->item=item;
temp->link=NULL;
if(is_empty(q)){ //νκ° κ³΅λ°±μ΄λ©΄
q->front=temp;
q->back=temp;
}
else {
q->back->link=temp;
q->back=temp;
}
}
}
element dequeue(QueueType *q) {
QueueNode *temp=q->front;
element item;
if(is_empty(q)) printf("νκ° λΉμ΄ μμ΅λλ€.");
else {
item=temp->item;
q->front=q->front->link;
if(q->front==NULL)
q->back=NULL; //νλλ¨μμ λ μμ νλ©΄
free(temp);
return item;
}
return -1;
}
int main(void) {
QueueType *q;
init(&q);
enqueue(&q,100);
enqueue(&q,200);
enqueue(&q,300);
printf("dequeue()=%d\n", dequeue(&q));
printf("dequeue()=%d\n", dequeue(&q));
printf("dequeue()=%d\n", dequeue(&q));
return 0;
}
-
νν ν
1μ°¨μ λ°°μ΄μ μ΄μ©ν΄μ νλ₯Ό ꡬννμ λλ νκ° ν¬νμνκ° μλ λλ§ μ½μ μ°μ°μ μννλλ‘ λμ΄μλλ°, μ€μ λ‘ λ©λͺ¨λ¦¬κ° λ€ μ°¨μ§ μκ³ μ€κ°μ΄ λΉμ΄μμμλ λΆκ΅¬νκ³ ν¬νμνλ‘ μΈμν΄μ λ μ΄μ μ½μ μ°μ°μ μννμ§ μλλ€.
μ΄κ²μ ν΄κ²°νκΈ° μν΄ μν νλ₯Ό μ¬μ©νλ€. 1μ°¨μ λ°°μ΄μ μ¬μ©νμ§λ§, λ Όλ¦¬μ μΌλ‘ λ°°μ΄μ μ²μκ³Ό λμ΄ μ°κ²°λμ΄ μλ μν κ΅¬μ‘°λ‘ κ°μ νκ³ μ¬μ©νλ€.-
μ½μ μμΉ
rear = (rear+1)mod n (μν ν)
rear = rear+1 (μμ°¨ ν) -
μμ μμΉ
front = (front+1) mod n (μν ν)
front = front+1 (μμ°¨ ν)#include <stdio.h> #include <stdlib.h> #define SIZE 4 typedef char element; typedef struct { element queue[SIZE]; int front, rear; } QueueType; QueueType *init() { QueueType *q; q = (QueueType *)malloc(sizeof(QueueType)); q->front=0; q->rear=0; return q; } int isEmpty(QueueType* q){ if (q->front == q->rear){ printf("q is empty"); return 1; } else return 0; } int isFull(QueueType *q){ if (((q->rear)%SIZE)==q->front){ printf("q is full"); return 1; } else return 0; } void enqueue(QueueType *q, element item){ if (isFull(q)) return; else { q->rear = (q->rear+1)%SIZE; q->queue[q->rear]=item; } } element dequeue(QueueType *q){ if (isEmpty(q)) exit(1); else { q->front = (q->front+1)%SIZE; return q->queue[q->front]; } } int main(void){ QueueType *q=init(); element data; //μ½μ enqueue(q,'A'); enqueue(q,'B'); data = dequeue(q); return 0; }
-
- μ°μ μμ ν
https://hannom.tistory.com/36
-
λ±
-
ν λκ° μ€ νλλ₯Ό μ’μ°λ‘ λ€μ§μ΄μ λΆμΈ ꡬ쑰λ‘, νμ μμͺ½μμ μ½μ ,μμ μ°μ°μ λͺ¨λ μνν μ μλλ‘ νμ₯ν ꡬ쑰μ΄λ€.
#include <stdio.h> #include <stdlib.h> typedef char element; typedef struce Node{ element data; struct Node *llink; struct Node *rlink; }Node; typedef struct{ Node *front, *rear; }DQueType; DQueType *init(){ DQueType *dq; dq = (DQueType *)malloc(sizeof(DQueType)); dq->front = NULL; dq->rear = NULL; return dq } int isEmpty(DQueType *dq){ if (dq->front==NULL){ printf("dq is empty"); return 1; } else return 0; } void insertFront(DQueType *dq, element item){ Node *newNode = (Node *)malloc(sizeof(Node)); newNode->data = item; if (dq->front==NULL){ dq->front=newNode; dq->rear=newNode; newNode->rlink=NULL; newNode->llink=NULL; } else { dq->front->llink = newNode; newNode->rlink=dq->front; dq->front=newNode; } } void insertRear(DQueType *dq, element item){ Node *newNode = (Node *)malloc(sizeof(Node)); newNode->data = item; if (dq->rear==NULL){ dq->front=newNode; dq->rear=newNode; newNode->rlink=NULL; newNode->llink=NULL; } else { dq->rear->llink = newNode; newNode->rlink=dq->front; dq->rear=newNode; } } element deleteFront(DQueType *dq){ Node *old = dq->front; element item; if(isEmpty(dq)) return 0; else { item = old->data; if(dq->front->rlink==NULL){ dq->front=NULL; dq->rear=NULL; } else{ dq->front=dq->front->rlink; dq->front->llink=NULL; } free(old); return item; } } element deleteRear(DQueType *dq){ Node *old = dq->rear; element item; if(isEmpty(dq)) return 0; else { item = old->data; if(dq->rear->rlink==NULL){ dq->front=NULL; dq->rear=NULL; } else{ dq->rear=dq->front->rlink; dq->rear->llink=NULL; } free(old); return item; } } int main(void){ DQueType *dq = init(); element data; insertFront(dq,'A'); insertRear(dq,'A'); data=deleteFront(dq); return 0; }
-
'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[μ€ν°λ] λΉνΈμ‘°μ , μμ νμ (0) | 2020.08.03 |
---|---|
[μκ³ λ¦¬μ¦ μ€ν°λ] μλ£κ΅¬μ‘°_2 (0) | 2020.07.28 |
go μΈμ΄ μμνκΈ° (0) | 2020.07.07 |
[μκ³ μ€ν] μμν #Quantize, μ± 8.9μ (0) | 2020.05.11 |
[μκ³ λ¦¬μ¦ μ€ν°λ] μκ³ μ€ν #PI (0) | 2020.04.27 |