jungol:problem_1003
정올 알고리즘 사이트에서 풀었던 문제를 기록용으로 정리함
문제 번호: 1003
문제 URL: http://www.jungol.co.kr/problem.php?ctc=040100&id=1003
내가 푼 코드
#include <stdio.h> #define NODE_SIZE 101 struct MyQueue { int data_[NODE_SIZE]; int front_; int rear_; int size_; }; void init_queue(struct MyQueue* p_queue) { int i = 0; for (i = 0; i < NODE_SIZE; i++) { p_queue->data_[i] = 0; } p_queue->front_ = 0; p_queue->rear_ = 0; } void push_data(struct MyQueue* p_queue, int data, int k) { if (p_queue->size_ == NODE_SIZE) { printf("queue is full\n"); return; } else { int iter_i = 0; int index_rear = p_queue->rear_; int* data_arr = p_queue->data_; for (iter_i = index_rear; iter_i > k; iter_i--) { data_arr[iter_i] = data_arr[iter_i - 1]; } data_arr[k] = data; p_queue->rear_ = p_queue->rear_ + 1; p_queue->size_ = p_queue->size_ + 1; } } int pop_data(struct MyQueue* p_queue) { int return_value = -1; if (p_queue->size_ > 0) { return_value = p_queue->data_[p_queue->front_]; p_queue->front_ = p_queue->front_ + 1; p_queue->size_ = p_queue->size_ - 1; } else { printf("queue is empty!\n"); } return return_value; } void do_test() { struct MyQueue test_queue; int i = 0; init_queue(&test_queue); for (i = 0; i < 100; i++) { push_data(&test_queue, i, 0); } for (i = 0; i < 100; i++) { printf("poped_data index of [%d] = %d \n", i, pop_data(&test_queue)); } } int compute_index(int max, int data) { int result = data - max; if (result < 0) { return (result * -1) - 1; } return result - 1; } int main(int argc, char* argv[]) { struct MyQueue my_queue; int n = 0; int i = 0; int data = 0; init_queue(&my_queue); scanf("%d", &n); for( i = 0; i < n; i++) { scanf("%d", &data); //printf("index: %d\n", compute_index(i + 1, data)); push_data(&my_queue, i+1, compute_index(i + 1, data)); } for (i = 0; i < n; i++) { printf("%d ", pop_data(&my_queue)); } printf("\n"); //do_test(); /* push_data(&my_queue, 1, 0); push_data(&my_queue, 2, 0); printf("data: %d\n", pop_data(&my_queue)); printf("data: %d\n", pop_data(&my_queue)); */ // printf("argc: %d, argv: %s\n", argc, argv[0]); return 0; }
jungol/problem_1003.txt · 마지막으로 수정됨: 2015/07/18 18:26 저자 lindol