ใ‚ใกใ‚ƒใใกใ‚ƒ ้–‹็™บ่€…๐Ÿฆพ
์ฝ”๋”ฉ ์ง ๐Ÿ’ช
ใ‚ใกใ‚ƒใใกใ‚ƒ ้–‹็™บ่€…๐Ÿฆพ
  • ์นดํ…Œ๊ณ ๋ฆฌ (135)
    • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ• (12)
      • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ (5)
      • DB (0)
      • Node.js (4)
      • ํ˜•์ƒ ๊ด€๋ฆฌ (2)
      • Spring (1)
    • ์›น (11)
      • React (5)
      • ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ__์›น (6)
    • ๋ชจ๋ฐ”์ผ (2)
      • ์•ˆ๋“œ๋กœ์ด๋“œ (2)
    • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (55)
      • C (13)
      • Python (15)
      • SQL (5)
      • Java (22)
    • ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท (11)
      • ์•„๋‘์ด๋…ธ (11)
    • ์ผ์ƒ (31)
      • ๋ง›์ง‘ (13)
      • ๋žญํ‚น๋‹ญ์ปด (4)
      • ํ›„๊ธฐ (11)
      • ์š”๋ฆฌ (3)
      • ์žก๋‹ด (0)
    • ๊ต์–‘ (4)
      • ์‹ฌ๋ฆฌํ•™ (3)
      • ํ…Œ๋‹ˆ์Šค (1)
    • ์ž๊ฒฉ์ฆ (9)
      • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (9)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿ’ป github

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
ใ‚ใกใ‚ƒใใกใ‚ƒ ้–‹็™บ่€…๐Ÿฆพ

์ฝ”๋”ฉ ์ง ๐Ÿ’ช

[์ž๋ฃŒ๊ตฌ์กฐ] 3์žฅ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C

[์ž๋ฃŒ๊ตฌ์กฐ] 3์žฅ

2022. 4. 25. 21:37

ใ€Š ๋ฐฐ์—ด ใ€‹

 - ๋™์ผํ•œ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ฒˆ์— ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ

 

[1์ฐจ์› ๋ฐฐ์—ด ์˜ˆ์ œ]

// C code
#include <stdio.h>

int main(void) {

	int arr[5];
	int byte_size, size;

	byte_size = sizeof(arr); // int ์ž๋ฃŒํ˜•์˜ ํฌ๊ธฐ 4byte * 5 = 20
	printf("๋ฐฐ์—ด์˜ ๋ฐ”์ดํŠธ ํฌ๊ธฐ : %d\n", byte_size);

	size = sizeof(arr) / sizeof(arr[0]); // (4*5)20 / 4 = 5
	printf("๋ฐฐ์—ด์˜ ํฌ๊ธฐ : %d\n", size);

	for (int i = 0; i < size; i++) {
		arr[i] = 0;
		printf("%d ", arr[i]);
	}
	return 0;
}

์ถœ๋ ฅ๋ฌธ ์‹คํ–‰ ๊ฒฐ๊ณผ

 

[2์ฐจ์› ๋ฐฐ์—ด ์˜ˆ์ œ]

// C code
#include <stdio.h>
#define ROW 3
#define COL 5

int main(void) {
	int arr[ROW][COL];

	int byte_size, size;
	byte_size = sizeof(arr);
	size = sizeof(arr) / sizeof(arr[0]);

	printf("๋ฐฐ์—ด์˜ ๋ฐ”์ดํŠธ ํฌ๊ธฐ : %d\n", byte_size);
	printf("๋ฐฐ์—ด์˜ ํฌ๊ธฐ : %dํ–‰\n", size);

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

	return 0;
}

์ถœ๋ ฅ๋ฌธ ์‹คํ–‰ ๊ฒฐ๊ณผ

 

ใ€Š ๊ตฌ์กฐ์ฒด ใ€‹

 - ํƒ€์ž…์ด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉ

 

[๊ตฌ์กฐ์ฒด ์˜ˆ์ œ]

// C code
#include <stdio.h>

typedef struct studentTag {
	char name[10];
	int age;
	double gpa;
} STUDENT;

int main(void) {

	printf("studentTag ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ = %d\n", sizeof(struct studentTag));
	STUDENT a = { "kim", 20, 4.3 };
	printf("a ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ : %d\n", sizeof(a));
	printf("ํ•™์ƒ a์˜ ์ด๋ฆ„ : %s\n", a.name);
	printf("ํ•™์ƒ a์˜ ๋‚˜์ด : %d\n", a.age);
	printf("ํ•™์ƒ a์˜ ํ‰์  : %.2f\n", a.gpa);
	return 0;
}

์ถœ๋ ฅ๋ฌธ ์‹คํ–‰ ๊ฒฐ๊ณผ

 

ใ€Š ๋ฐฐ์—ด/๊ตฌ์กฐ์ฒด์˜ ์‘์šฉ ใ€‹

 

 [ ๋‹คํ•ญ์‹ ๋ง์…ˆ ํ”„๋กœ๊ทธ๋žจ ]

 - ๋‹คํ•ญ์‹์˜ ๋ชจ๋“  ํ•ญ์„ ๋ฐฐ์—ด์— ์ €์žฅ

 - ๋‹คํ•ญ์‹์˜ 0์ด ์•„๋‹Œ ํ•ญ๋งŒ์„ ๋ฐฐ์—ด์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•

// C code
#include <stdio.h>
#define MAX(a, b) a>b?a:b
#define MAX_DEGREE 101

typedef struct {
	int degree;				// ๋‹คํ•ญ์‹์˜ ์ฐจ์ˆ˜
	float coef[MAX_DEGREE]; // ๋‹คํ•ญ์‹์˜ ๊ณ„์ˆ˜
} polynomial;

polynomial poly_add1(polynomial A, polynomial B) {

	polynomial C;					   // ๋‹คํ•ญ์‹ A + B ์˜ ๊ฒฐ๊ณผ ๋‹คํ•ญ์‹์ธ C
	int Apos = 0, Bpos = 0, Cpos = 0;  // ๋ฐฐ์—ด ์ธ๋ฑ์Šค ๋ณ€์ˆ˜
	int degree_a = A.degree;
	int degree_b = B.degree;
	C.degree = MAX(A.degree, B.degree); // ๊ฒฐ๊ณผ ๋‹คํ•ญ์‹ ์ฐจ์ˆ˜

	while (Apos <= A.degree && Bpos <= B.degree) {
    	// Aํ•ญ์˜ ์ฐจ์ˆ˜ > Bํ•ญ์˜ ์ฐจ์ˆ˜
		if (degree_a > degree_b) {
			C.coef[Cpos++] = A.coef[Apos++];
			degree_a--;
		}
        // Aํ•ญ์˜ ์ฐจ์ˆ˜ == Bํ•ญ์˜ ์ฐจ์ˆ˜
		else if (degree_a == degree_b) {
			C.coef[Cpos++] = A.coef[Apos++] + B.coef[Bpos++];
			degree_a--;
			degree_b--;
		}
        // Aํ•ญ์˜ ์ฐจ์ˆ˜ < Bํ•ญ์˜ ์ฐจ์ˆ˜
		else {
			C.coef[Cpos++] = B.coef[Bpos++];
			degree_b--;
		}
	}
	return C;
}

void print_poly(polynomial p) {
	
	for (int i = p.degree; i > 0; i--) {
		printf("%3.1fx^%d + ", p.coef[p.degree - i], i);
	}
	printf("%3.1f \n", p.coef[p.degree]);
}

int main(void) {

	polynomial a = { 5, {3, 6, 0, 0, 0, 10} };
	polynomial b = { 4, {7, 0, 5, 0, 1} };
	polynomial c;
	
	print_poly(a);
	print_poly(b);
	c = poly_add1(a, b);
	printf("-------------------------------------------\n");
	print_poly(c);
	return 0;
}

์ถœ๋ ฅ๋ฌธ ์‹คํ–‰ ๊ฒฐ๊ณผ

 

[ ํฌ์†Œํ–‰๋ ฌ ]

 - ํ–‰๋ ฌ์˜ ๊ฐ’์ด ๋Œ€๋ถ€๋ถ„ 0์ธ ํ–‰๋ ฌ

 

 โ‘  2์ฐจ์› ๋ฐฐ์—ด๋กœ ์ „์ฒด ์š”์†Œ๋ฅผ ์ €์žฅํ•˜์—ฌ ํ‘œํ˜„ ํ•˜๋Š” ๋ฐฉ๋ฒ•

     - ์ „์ฒด ์š”์†Œ๋ฅผ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ์ €์žฅ

     - ํ–‰๋ ฌ์˜ ์—ฐ์‚ฐ์„ ๊ฐ„๋‹จํžˆ ๊ตฌํ˜„ ๊ฐ€๋Šฅ

     - ๋ฐฐ์—ด์˜ ํ–‰๋ ฌ ์ธ๋ฑ์Šค ๊ฐ’์ด 0์ธ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๋‚ญ๋น„

 

 โ‘ก 0์ด ์•„๋‹Œ ์š”์†Œ๋“ค๋งŒ ์ €์žฅํ•˜์—ฌ ํ‘œํ˜„ ํ•˜๋Š” ๋ฐฉ๋ฒ•

     - 2์ฐจ์› ๋ฐฐ์—ด ๋‚ด 0์ด ์•„๋‹Œ ์š”์†Œ๋“ค๋งŒ ์ €์žฅ

     - ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ ˆ์•ฝ

     - ํ–‰๋ ฌ ์—ฐ์‚ฐ๋“ค์˜ ๊ตฌํ˜„์ด ๋ณต์žกํ•ด์ง

์ผ๋ฐ˜์ ์ธ 2์ฐจ์› ๋ฐฐ์—ด์ด ํฌ์†Œํ–‰๋ ฌ๋กœ ๋ณ€ํ™˜

 

 

 [ ํฌ์†Œํ–‰๋ ฌ์˜ ์ „์น˜ ]

 

  โ‘  2์ฐจ์› ๋ฐฐ์—ด๋กœ ์ „์ฒด ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ํ–‰๋ ฌ์„ ์ „์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•

      - ๋ฐฐ์—ด์˜ ์š”์†Œ(i, j) → (j, i)๋กœ ๊ตํ™˜ํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ

โ‘ ๋ฒˆ ๋ฐฉ๋ฒ•

// C code

// ๊ธฐ์กด ํ–‰๋ ฌ A → ์ „์น˜ → ํ–‰๋ ฌ B
void matrix_transpose(int A[row][col], int b[row][col]){
	for(int i=0; i<row; i++)
    	for(int j=0; j<col; j++)
        	b[j][i] = a[i][j];
}

 

  โ‘ก 0์ด ์•„๋‹Œ ์š”์†Œ๋งŒ (row, col, value)๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

      - ์ „์น˜ ์—ฐ์‚ฐ์„ ์œ„ํ•ด ๊ตฌ์กฐ์ฒด ์‚ฌ์šฉ

โ‘ก๋ฒˆ ๋ฐฉ๋ฒ•

// C code
#include <stdio.h>
#include <stdlib.h>
#define MAX_TERMS 100

typedef struct {
	int row;
	int col;
	int value;
} ELEMENT;

typedef struct SparseMatrix {
	ELEMENT data[MAX_TERMS];
	int rows;  // ํ–‰์˜ ๊ฐœ์ˆ˜
	int cols;  // ์—ด์˜ ๊ฐœ์ˆ˜
	int terms; // ํ•ญ์˜ ๊ฐœ์ˆ˜
} SparseMatrix;

SparseMatrix matrix_transpose2(SparseMatrix a) {

	SparseMatrix b;
	int c, i, bindex; // ํ–‰๋ ฌ b์—์„œ ํ˜„์žฌ ์ €์žฅ ์œ„์น˜
	b.rows = a.rows;
	b.cols = a.cols;
	b.terms = a.terms;

	if (a.terms > 0) {
		bindex = 0;
		for (c = 0; c < a.cols; c++) {
			for (i = 0; i < a.terms; i++) {
				if (a.data[i].col == c) {
					b.data[bindex].row = a.data[i].col;
					b.data[bindex].col = a.data[i].row;
					b.data[bindex].value = a.data[i].value;
					bindex++;
				}
			}
		}
	}
	return b;
}

void matrix_print(SparseMatrix a) {
	int i;
	printf("=========================\n");

	for (i = 0; i < a.terms; i++)
		printf("(%d, %d, %d) \n", a.data[i].row, a.data[i].col, a.data[i].value);

	printf("=========================\n");
}

int main(void) {

	SparseMatrix m = {
		{{0, 3, 7},
		{1, 0, 9},
		{1, 5, 8},
		{3, 0, 6},
		{3, 1, 5},
		{4, 5, 1},
		{5, 2, 2}},
		6,
		6,
		7
	};
	SparseMatrix result;

	matrix_print(m);
	printf("\n------- transpose -------\n\n");
	result = matrix_transpose2(m);
	matrix_print(result);

	return 0;
}

โ‘ก๋ฒˆ์ฝ”๋“œ ์‹คํ–‰ ๊ฒฐ๊ณผ

 

ใ€Š ํฌ์ธํ„ฐ ใ€‹

 - ๋‹ค๋ฅธ ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ณ€์ˆ˜

 - &์—ฐ์‚ฐ์ž : ๋ณ€์ˆ˜์˜ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜

 - *์—ฐ์‚ฐ์ž : ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ณณ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ 

 

 [ ํฌ์ธํ„ฐ๋ฅผ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ(ํฌ์ธํ„ฐ์— ์˜ํ•œ ํ˜ธ์ถœ) ]

// C code 
#include <stdio.h>

void swap(int* a, int* b) {
	int temp;

	temp = *a;
	*a = *b;
	*b = temp;
}

int main(void) {

	int a = 1, b = 2;

	printf("swap์„ ํ˜ธ์ถœํ•˜๊ธฐ ์ „ a=%d, b=%d\n", a, b);
	swap(&a, &b);
	printf("swap์„ ํ˜ธ์ถœํ•˜๊ธฐ ํ›„ a=%d, b=%d\n", a, b);

	return 0;
}

์ถœ๋ ฅ๋ฌธ ์‹คํ–‰ ๊ฒฐ๊ณผ

 

 [ ๋ฐฐ์—ด์„ ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ œ ]

// C code
#include <stdio.h>
#define SIZE 6
#define _CRT_SECURE_NO_WARNINGS

void get_int(int arr[]) {

	printf("6๊ฐœ์˜ ์ •์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์‹œ์˜ค : ");

	for (int i = 0; i < SIZE; i++)
		scanf("%d", &arr[i]);
}

int arr_sum(int arr[]) {

	int sum=0;

	for (int i = 0; i < SIZE; i++)
		// sum += *(arr + i)
		sum += arr[i];

	return sum;
}

int main(void) {

	int arr[SIZE];
	
	get_int(arr);
	printf("arr์˜ ํ•ฉ : %d\n", arr_sum(arr));
	return 0;
}

์ถœ๋ ฅ๋ฌธ ์‹คํ–‰ ๊ฒฐ๊ณผ

 

 

[ ์ขŒํ‘œ ๋‘๊ฐœ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ์ขŒํ‘œ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ ๊ตฌํ•˜๊ธฐ ]

// C code
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

typedef struct {
	int x_coord;
	int y_coord;
}Coord;

double get_distance(Coord p1, Coord p2) {

	double dx = p1.x_coord - p2.x_coord;
	double dy = p1.y_coord - p2.y_coord;
	
	double distance = sqrt((dx * dx) + (dy * dy));

	return distance;
};

int main(void) {

	Coord p1 = { 1, 2 };
	Coord p2 = { 9, 8 };

	double distance = get_distance(p1, p2);

	printf("p1์™€ p2 ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ : %.2f\n", distance);

	return 0;
}

์ถœ๋ ฅ๋ฌธ ์‹คํ–‰ ๊ฒฐ๊ณผ

 

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    'ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [์ž๋ฃŒ๊ตฌ์กฐ] ๋ฐํฌ(deque) ์ž๋ฃŒํ˜•
    • [์ž๋ฃŒ๊ตฌ์กฐ] ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น
    • [์ž๋ฃŒ๊ตฌ์กฐ] 2์žฅ
    • [์ž๋ฃŒ๊ตฌ์กฐ] 1์žฅ
    ใ‚ใกใ‚ƒใใกใ‚ƒ ้–‹็™บ่€…๐Ÿฆพ
    ใ‚ใกใ‚ƒใใกใ‚ƒ ้–‹็™บ่€…๐Ÿฆพ
    ๐Ÿ‘Š ๋ธ”๋กœ๊ทธ๋„ ๊ทผ์„ฑ์ด๋‹ค? ๐Ÿ‘Š

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”