gabriel227
2022.03.28
@gabriel227님이 새 포스트를 작성했습니다.
코딩테스트 <LEVEL 1> - 15일차
golmu님의 코드를 참고하였습니다. #include <iostream> #include <queue> using namespace std; #define MAX_SIZE 7 int maze[MAX_SIZE][MAX_SIZE] = {     {1, 1, 0, 0, 0, 0, 0},     {0, 1, 1, 0, 1, 1, 1},     {0, 1, 1, 1, 1, 1, 1},     {0, 1, 0, 1, 0, 0, 1},     {0, 0, 0, 1, 0, 0, 1},     {1, 0, 0, 1, 1, 1, 1},     {1, 1, 1, 1, 0, 1, 0} }; int isVisited[MAX_SIZE][MAX_SIZE] = {0,}; int dx[4] = {0, 1, 0, -1}; int dy[4] = {-1, 0, 1, 0}; typedef struct {     int y;     int x;     int num; } road; int BFS(int r, int c) {     queue<road> q;     q.push({0,0,0});     isVisited[0][0] = 1;     while (!q.empty()) {         road pos = q.front();         int row = pos.y;         int col = pos.x;         if (row == r && col == c) {             return pos.num;         }         q.pop();         for (int i = 0; i < 4; ++i) {             int new_x = col + dx[i];             int new_y = row + dy[i];             if (new_x >= 0 && new_y >= 0 && maze[new_y][new_x] == 1 && !isVisited[new_y][new_x]) {                 q.push({new_y, new_x, pos.num + 1});                 isVisited[new_y][new_x] = 1;             }         }     }     return -1; } int main(void) {     int answer = BFS(6, 5);     cout << answer << endl;     return 0;   }
gabriel227
2022.03.24
@gabriel227님이 새 포스트를 작성했습니다.
코딩테스트 <LEVEL 1> - 13일차
아직 구현하기는 어렵네요. 이전 배운 코드를 활용만 해보았습니다. #include<stdio.h> #include<stdlib.h>  #define MAX_HEAP_SIZE 101 typedef struct _Heap { int arr[MAX_HEAP_SIZE]; int heap_count; } Heap; Heap* heap; int compare_with_parent(int index) { if (index <= 1) return 0; int parent_index = index / 2; if (heap->arr[index] < heap->arr[parent_index]) return 1; else return 0; } void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } void insert(int data) { int insert_index, parent, tmp; heap->heap_count++; if (heap->heap_count == 1) { heap->arr[heap->heap_count] = data; return; } heap->arr[heap->heap_count] = data; insert_index = heap->heap_count; while (compare_with_parent(insert_index)) { parent = insert_index / 2; swap(&(heap->arr[insert_index]), &(heap->arr[parent])); insert_index = parent; } } int compare_with_child(int index) { int left, right; left = 2 * index; right = 2 * index + 1; if (left >= heap->heap_count && right >= heap->heap_count) { return 0; } if (right >= heap->heap_count)  if (heap->arr[left] < heap->arr[index])  return left; if (heap->arr[left] < heap->arr[right]) return left; else return right; } int pop() { int index = 1, child_index, root, terminal_data; root = heap->arr[1]; terminal_data = heap->arr[heap->heap_count]; heap->arr[heap->heap_count] = NULL; heap->arr[1] = terminal_data; heap->heap_count--; while (1) { child_index = compare_with_child(index); if (!child_index) break; swap(&(heap->arr[child_index]), &(heap->arr[index])); index = child_index; } return root; } int main(void) { heap = malloc(sizeof(Heap)); heap->heap_count = 0; insert(9); insert(6); insert(10); insert(1); insert(5); insert(2); for (int i = 1; i < 6; i++) printf("%d ", heap->arr[i]); pop(); printf("\n"); for (int i = 1; i < 6; i++) printf("%d ", heap->arr[i]); return 0; }
gabriel227
2022.03.22
@gabriel227님이 새 포스트를 작성했습니다.
코딩테스트 <LEVEL 1> - 11일차
수정중 #include <stdio.h> #include <stdlib.h> typedef int Elem; typedef struct Node {   Elem data;   struct Node* left;   struct Node* right; } Node; void PreOrder(Node* node) {   if(node == NULL)     return;   printf("%d ", node->data);   PreOrder(node->left);   PreOrder(node->right); } void InOrder(Node* node) {   if(node == NULL)     return;   InOrder(node->left);   printf("%d ", node->data);   InOrder(node->right); } void PostOrder(Node* node) {   if(node == NULL)     return;   PostOrder(node->left);   PostOrder(node->right);   printf("%d ", node->data); } Node* SetTree() {   int i;   Node* node[8];   for(int i = 0; i < 8; i++)                       int main() { }
gabriel227
2022.03.21
@gabriel227님이 새 포스트를 작성했습니다.
코딩테스트 <LEVEL 1> - 10일차
출처 - https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=holy_joon&logNo=221583745847 #include <stdio.h> #include <stdlib.h> struct NODE //구조체 선언 {     struct NODE* llink;     int data;     struct NODE* rlink; }; struct NODE* head; struct NODE* tail; //노드 생성 함수 struct NODE* makenode(int value){     struct NODE *node = (struct NODE*)malloc(sizeof(struct NODE));     node->llink = NULL;     node->data = value;     node->rlink = NULL;     return node; } //출력 함수 void print(){     struct NODE *p;     p = head;     while(p->rlink != tail){         printf("%d-->",p->data);         p = p->rlink;     }     printf("%d",p->data); } //초기화 함수 void init(){     head = (struct NODE*)malloc(sizeof(struct NODE));     tail = (struct NODE*)malloc(sizeof(struct NODE));     head->data = 0;     tail->data = 0;     head->rlink = tail;     head->llink = head;     tail->rlink = tail;     tail->llink = head; } //뒤로부터 노드 추가하는 함수 void push_back(int value){      struct NODE* newnode = makenode(value);     struct NODE* p;     p = tail;     p->llink->rlink = newnode;     newnode->llink = p->llink;     p->llink = newnode;     newnode->rlink = p; } //main함수 int main(){     init(); //head와 tail 초기화 (data = 0)     push_back(10); //10 추가     push_back(30); //30 추가     push_back(50); //50 추가     print();  //출력     return 0; }
gabriel227
2022.03.18
@gabriel227님이 새 포스트를 작성했습니다.
코딩테스트 <LEVEL 1> - 9일차
dewchae님의 코드를 참고했습니다. #include <stdio.h> #include <stdlib.h> #define MAX_QUEUE_SIZE 10 int queue[MAX_QUEUE_SIZE]; int head = 0, tail = 0; int request[7][2] = { {1,30}, {2,20}, {5,23}, {3,40}, {9,1}, {8,50}, {7,13} }; int is_empty() { if (head == tail) { return 1; } return 0; } int is_full() { if ((tail + 1) % MAX_QUEUE_SIZE == head) { return 1; } return 0; } void enqueue(int item) { if (is_full()) { printf("큐가 꽉찼습니다.\n"); } else { tail = (tail + 1) % MAX_QUEUE_SIZE; queue[tail] = item; } } int dequeue() { if (is_empty()) { printf("큐가 비었습니다.\n"); return -1; } else { head = (head + 1) % MAX_QUEUE_SIZE; return queue[head]; } } void work() { int total = 0, rest = 0, time = 50; while (!is_empty()) { if (time - queue[head + 1] < queue[head + 2]) { rest += 10; } time -= queue[head + 1]; total += dequeue(); printf("%d ", request[head - 1][0]); if (time < 0) { time = 50; } } printf("\n총 소요 시간 : %d\n", rest + total); } int main() { for (int i = 0;i < 7;i++) { enqueue(request[i][1]); } work(); }
gabriel227
2022.03.16
@gabriel227님이 새 포스트를 작성했습니다.
코딩테스트 <LEVEL 1> - 7일차
#include <stdio.h> #include <math.h> #include <stdbool.h> #define MAX 1000 bool not_prime[MAX]; int sum_prime[MAX/10]; void decimal(int a){        int sq = sqrt(a);     for (int i = 2; i <= sq; i++)         for (int j = 2*i; j <= a; j += i)             not_prime[j] = 1;     sum_prime[0] = 0;     int size = 1;     for (int i = 2, sum = 0; i <= a; i++)         if (!not_prime[i])             sum_prime[size++] = (sum += i);     int left = 0, right = 1, cnt = 0;     while (left <= right && right < size){         int temp = sum_prime[right] - sum_prime[left];         if (temp > a) left++;         else {             if (temp == a) cnt++;             right++;         }     }     printf("%d", cnt); } int main(){       decimal(41);       decimal(20);       return 0; }
yuuulya
2022.03.15
@yuuulya님이
코딩테스트 <LEVEL 1> - 6일차
포스트를 좋아합니다.