'Programming/Programmers 알고리즘 문제'에 해당되는 글 6건

  1. 2019.10.24 structsize
  2. 2019.10.24 arrayshift
  3. 2019.10.24 quickselect
  4. 2019.10.24 quicksort
  5. 2018.04.16 지나가다 본 알고리즘 문제 - 택배 박스 문제
  6. 2018.04.15 파이썬 공부
#include <stdio.h>
#include <unistd.h>
#pragma pack(push, 1) // 1 바이트 크기로 정렬
struct str_pack {
	char flags;
	int seq;
};
#pragma pack(pop) // 정렬 설정을 이저너ㅓ 상태 (기본값) 로 되돌림

union packet {
	int num;
	char empty;
};

union packet_empty {
	int num;
	char empty[0];
};

struct str_first {
	char a;
	int num_a;
	char b;
};

union uni_first {
	int num_a;
	int num_b;
};

union uni_second {
	int a;
	char b;
	double d;
	int arr[3];
};

struct Person1 {
	char name[20];
	double age;
	char sex;
};

struct Person2 {
	char name[20];
	char sex;
	double age;
};

int main()
{
	printf("PAGE_SIZE = %d\n", getpagesize());

	int i;
	int *ip;
	char ch;
	char *chp;
	char arrays[10];
	char empty[0];
	union packet pk;
	union packet_empty pk_empty;
	int int_array4[4];

	struct str_first v_str_first;
	union uni_first v_uni_first;

	pk.num = 4;
	pk.empty = 'c';
	//pk_empty.empty = "c";


	printf("sizeof(int i) = %ld\n", sizeof(i));
	printf("sizeof(int *i) = %ld\n", sizeof(ip));
	printf("sizeof(char ch) = %ld\n", sizeof(ch));
	printf("sizeof(char *chp) = %ld\n", sizeof(chp));
	printf("sizeof(char arrays[10]) = %ld\n", sizeof(arrays[10]));
	printf("sizeof(char empty[0]) = %ld\n", sizeof(empty[0]));
	printf("sizeof(union packet) = %ld\n", sizeof(union packet));
	printf("sizeof(union packet) = %ld\n", sizeof(union packet));

	printf("sizeof(int_array4) = %ld\n", sizeof(int_array4));
	printf("sizeof(int_array4[0]) = %ld\n", sizeof(int_array4[0]));

	printf("\n============ Struct Size =============\n\n");

	printf("sizeof(struct str_first) = %ld\n", sizeof(struct str_first));
	printf("sizeof(struct str_first v_str_first) = %ld\n", sizeof(v_str_first));
	printf("sizeof(union uni_first) = %ld\n", sizeof(union uni_first));
	printf("sizeof(union uni_first v_uni_first) = %ld\n", sizeof(v_uni_first));
	printf("sizeof(union uni_second) = %ld\n", sizeof(union uni_second));
	printf("sizeof(struct Person1) = %ld\n", sizeof(struct Person1));
	printf("sizeof(struct Person2) = %ld\n", sizeof(struct Person2));

	v_uni_first.num_a = 4;

	printf("%d\n", v_uni_first.num_a);
	printf("%d\n", v_uni_first.num_b);

	return 0;
}

'Programming > Programmers 알고리즘 문제' 카테고리의 다른 글

arrayshift  (0) 2019.10.24
quickselect  (0) 2019.10.24
quicksort  (0) 2019.10.24
지나가다 본 알고리즘 문제 - 택배 박스 문제  (0) 2018.04.16
파이썬 공부  (0) 2018.04.15
Posted by 이미안녕
,
#include <stdio.h>

void reverse(int nums[], int size, int start, int end) {
	while (start < end) {
		int temp = nums[start];
		nums[start] = nums[end];
		nums[end] = temp;
		start++;
		end--;
	}
}

void rotate(int nums[], int size, int k) {

	k = k % size;
	reverse(nums, size, 0, k-1);
	reverse(nums, size, k, size-1);
	reverse(nums, size, 0, size-1);
}


int main() {
	int arr[10] = {0,1,2,3,4,5,6,7,8,9};
	int size = 10;
	int i, j;

	for (i = 0; i < 10; i++) {
		printf("%d ", arr[i]);
	}
	printf("\n");

	// reverse(arr, size, 0, 9);
	rotate(arr, size, 2);

	for (i = 0; i < 10; i++) {
		printf("%d ", arr[i]);
	}
	printf("\n");

	return 0;
}

'Programming > Programmers 알고리즘 문제' 카테고리의 다른 글

structsize  (0) 2019.10.24
quickselect  (0) 2019.10.24
quicksort  (0) 2019.10.24
지나가다 본 알고리즘 문제 - 택배 박스 문제  (0) 2018.04.16
파이썬 공부  (0) 2018.04.15
Posted by 이미안녕
,
#include <stdio.h>

void swap(int data[], int a, int b) {
	int temp = 0;
	temp = data[a];
	data[a] = data[b];
	data[b] = temp;
}

int partition(int data[], int left, int right) {
	int pivot = data[left];
	int low = left +1;
	int high = right;

	while (low <= high)
	{
		while (low <= right && pivot >= data[low])
			low++;
		while (high >= (left+1) && pivot <= data[high])
			high--;

		if (low <= high) {
			swap(data, low, high);
		}
	}

	swap(data, left, high);
	return high;
}

void quick_select(int data[], int left, int right, int k) {
	int pivot = 0;
	if (left >= right) {
		return;
	}

	pivot = partition(data, left, right);

	if (pivot == k)
		return;
	else if (pivot > k)
		quick_select(data, left, pivot -1, k);
	else if (pivot < k)
		quick_select(data, pivot +1, right, k);
}

int main(void) {
	
	int i = 0;
	int data[100];
	int n = 0;
	int k = 0;

	printf("number = ?\n");
	scanf("%d", &n);

	printf("k = ?\n");
	scanf("%d", &k);

	srand(time(NULL));
	for (i = 0; i < n; i++) {
		data[i] = rand()%1000;
	}

	printf("before\n");
	for (i = 0; i < n; i++) {
		printf("%d ", data[i]);
	}
	printf("\n");

	quick_select(data, 0, n-1, k);

	printf("after\n");
	for (i = 0; i < n; i++) {
		printf("%d ", data[i]);
	}
	printf("\n");

	return 0;
}

'Programming > Programmers 알고리즘 문제' 카테고리의 다른 글

structsize  (0) 2019.10.24
arrayshift  (0) 2019.10.24
quicksort  (0) 2019.10.24
지나가다 본 알고리즘 문제 - 택배 박스 문제  (0) 2018.04.16
파이썬 공부  (0) 2018.04.15
Posted by 이미안녕
,
#include <stdio.h>

void swap(int data[], int a, int b) {
	int temp = 0;
	temp = data[a];
	data[a] = data[b];
	data[b] = temp;
}

int partition(int data[], int left, int right) {
	int pivot = data[left];
	int low = left +1;
	int high = right;

	while (low <= high)
	{
		while (low <= right && pivot >= data[low])
			low++;
		while (high >= (left+1) && pivot <= data[high])
			high--;

		if (low <= high) {
			swap(data, low, high);
		}
	}

	swap(data, left, high);
	return high;
}

void quick_sort(int data[], int left, int right) {
	int pivot = 0;
	if (left >= right) {
		return;
	}

	pivot = partition(data, left, right);
	quick_sort(data, left, pivot -1);
	quick_sort(data, pivot +1, right);
}

int main(void) {
	
	int data[10] = {0,2,4,6,8,1,3,5,7,9};
	int n = 10;
	int i = 0;

	quick_sort(data, 0, n-1);

	for (i = 0; i < n; i++) {
		printf("%d ", data[i]);
	}
	printf("\n");

	return 0;
}

'Programming > Programmers 알고리즘 문제' 카테고리의 다른 글

structsize  (0) 2019.10.24
arrayshift  (0) 2019.10.24
quickselect  (0) 2019.10.24
지나가다 본 알고리즘 문제 - 택배 박스 문제  (0) 2018.04.16
파이썬 공부  (0) 2018.04.15
Posted by 이미안녕
,


당신은 택배회사 사장이다


택배 상자는 2가지 종류가 있다.


5개 짜리 박스, 3개  짜리 박스.



주문이 들어오면 저 두가지 박스에 나눠서 넣는데,


5개 짜리 박스가 가성비가 좋아 최대한 많이 사용해야 한다.



1. 5개 짜리, 3개 짜리 박스로 포장이 불가능한 주문은 -1 리턴


ex) 17 


2. 5개 짜리 박스를 최대한 많이 사용

ex) input : 18,  output : 3, 1






의식의 흐름대로 짰을 경우 아래와 같다



#include <stdio.h>


void packing(int post) {

    int count_5 = 0;

    int count_3 = 0;

    if (post % 5 == 0 || post % 3 == 0) {

        count_5 = post / 5;

        count_3 = (post - (count_5 * 5)) / 3;

        while (1) {

            if ( (post - (count_5 * 5) - (count_3 * 3)) == 0) {

                printf("count_5 = %d, count_3 = %d\n", count_5, count_3);

                return;

            } else {

                count_5--;

                count_3 = (post - (count_5 * 5)) /3;

            }

        }

        printf("??\n");

    } else {

        printf("-1\n");

        return;

    }

}


int main() {

    int post = 21;

    scanf("%d", &post);


    packing(post);


    return 0;


}



'Programming > Programmers 알고리즘 문제' 카테고리의 다른 글

structsize  (0) 2019.10.24
arrayshift  (0) 2019.10.24
quickselect  (0) 2019.10.24
quicksort  (0) 2019.10.24
파이썬 공부  (0) 2018.04.15
Posted by 이미안녕
,


실제 현업에서 사용하고 있는 언어는 C 인 관계로


Programmers 의 문제를 풀기 위해서는 파이썬 문법 공부가 필요하다

'Programming > Programmers 알고리즘 문제' 카테고리의 다른 글

structsize  (0) 2019.10.24
arrayshift  (0) 2019.10.24
quickselect  (0) 2019.10.24
quicksort  (0) 2019.10.24
지나가다 본 알고리즘 문제 - 택배 박스 문제  (0) 2018.04.16
Posted by 이미안녕
,