본문 바로가기

분류 전체보기243

트리 구현하기(C언어 구조체, 파이썬 클래스) 왼쪽 자식 오른쪽 형제(LCRS) 트리 구현하기 왼쪽 자식 오른쪽 형제(LCRS) 트리는 각 노드가 자신의 왼쪽 자식과 오른쪽 형제를 가리키는 포인터를 갖는 자료 구조입니다. 이 방식은 트리의 모든 노드를 연결리스트와 유사한 형식으로 저장할 수 있게 해주며, 특히 다중 자식을 가진 트리를 간단하게 표현할 수 있습니다. 노드 구조체 정의 먼저, 각 노드를 정의하는 구조체 LCRSNode를 생성합니다. 이 구조체는 자식 노드와 형제 노드를 가리키는 포인터, 그리고 데이터를 저장하는 필드를 포함합니다. typedef char ElementType; typedef struct tagLCRSNode { struct tagLCRSNode* LeftChild; struct tagLCRSNode* RightSiblin.. 2024. 4. 20.
헌내기는 친구가 필요해 2024. 4. 20.
이항 계수 https://ko.wikipedia.org/wiki/%EC%9D%B4%ED%95%AD_%EA%B3%84%EC%88%98 이항 계수 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 이항 계수의 표를 파스칼의 삼각형이라고 한다. 조합론에서 이항 계수(二項係數, 영어: binomial coefficient)는 이항식을 이항 정리로 전개했을 때 각 항의 계수이며 ko.wikipedia.org \[ \binom{n}{k} = \begin{cases} \frac{n!}{k!(n-k)!} & \text{if } 0 \leq k \leq n \\ 0 & \text{if } k n \end{cases}= {n \mathrm{C} k}= C(n, k) \] \[ (x + y)^n = \sum_{k=.. 2024. 4. 19.
suno]옷장 노래 생성 2024. 4. 18.
C 언어 고급편]🚀19 전처리와 분할 컴파일 전처리 지시자 소스파일→ 전처리된 소스파일 → 목적파일 → 실행파일 전처리기가 소프코드를 컴파일하기 좋게 다듬는 과정. #include 파일 포함. 컴파일러 설정 디렉터리에서 파일 찾음. “” 소스파일이 저장된 디렉터리에서 먼저 찾음. 사용자 정의 헤더. 프로젝트 디렉터리가 이닌 곳에서 찾으려면 경로면 포함. 이스케이프 필요 없음.(전처리기가 하는 일이라서 컴파일러처럼 할 필요 없음. 전처리기가 배치 파일이나 배시 스크립트가 간단한 명령을 처리하는 방식과 유사한 느낌이 있다.) students.h 헤더 파일에서 구조체 정의하고 main.c에서 #include “students.h”하면 헤더 파일 포함됨. 메인 함수 중간에서도 인클루드는 가능하지만…. 특별한 이유 없으면 하지 말 것 전처리 후에도 여전히 .. 2024. 4. 17.
🐨BOJ#1086]박성원\비트 필드 활용 다이나믹 프로그래밍 https://www.acmicpc.net/problem/1086 1086번: 박성원 첫째 줄에 정답을 기약분수 형태로 출력한다. p/q꼴로 출력하며, p는 분자, q는 분모이다. 정답이 0인 경우는 0/1로, 1인 경우는 1/1로 출력한다. www.acmicpc.net 2 초 128 MB 10482 3074 2089 26.813% 문제 서로 다른 정수로 이루어진 집합이 있다. 이 집합의 순열을 합치면 큰 정수 하나를 만들 수 있다. 예로, {5221, 40, 1, 58, 9}로 5221401589를 만들 수 있다. 합친 수가 정수 K로 나누어 떨어지는 순열을 구하는 프로그램을 작성하시오. 하지만, 박성원은 이 문제를 풀지 못했다. 따라서 박성원은 그냥 랜덤하게 순열 하나를 정답이라고 출력하려고 한다. .. 2024. 4. 17.
C 언어 고급편]🚀18 파일 입출력 목차 파일 개방과 입출력 파일 개방과 폐쇄 #include int main(void) { FILE *fp; fp = fopen("a.txt","r"); if (fp == NULL) { printf("파일이 열리지 않았습니다.\n"); return 1; } printf("파일이 열렸습니다.\n"); fclose(fp); return 0; } fopen 함수 원형 FILE *fopen(const char *, const char *); 기본 위치는 현재 디렉터리 == 실행 파일이 있는 위치 절대경로를 주고 싶다면 fopen(“c:\source\a.txt”, “r”) 백슬래시는 이스케이프를 위해 두 번씩 쓴다. 현재 작업 디랙터리를 기준으로 상대 경로 지정도 가능. "…"상위 폴더 개방 모드는 r,w,a 파일.. 2024. 4. 13.
C 언어 고급편]🚀17 사용자 정의 자료형 목차 구조체 # 선언 #변수 # 멤버 #변수의 대입 연산 사용자가 만들어 쓰는 자료형. 구조를 먼저 선언하고 써야 함. 배열은 같은 형태의 데이터만 묶음. 학번 이름 학점 등의 다양한 형식을 묶으려면 구조체 선언과 멤버 사용 변수 선언 전에 구조체 선언 #include struct student // 구조체 선언 { int num; // int형 멤버 double grade; // double형 멤버 }; // 세미콜론 사용 int main(void) { struct student s1; // struct student형의 변수 선언 s1.num = 2; // s1의 num 멤버에 2 저장 s1.grade = 2.7; // s1의 grade 멤버에 2.7 저장 printf("학번 : %d\n", s1.n.. 2024. 4. 12.
C 언어 고급편]🚀16 메모리 동적 할당 목차 동적 할당 함수 C언어에서 메모리 동적 할당은 프로그램 실행 중에 필요한 메모리 공간을 할당받는 것을 의미한다. 이는 프로그램의 유연성을 증가시키고, 필요한 만큼의 메모리만 사용할 수 있게 한다. malloc, free 함수 #include #include // malloc, free 함수 사용을 위한 헤더 파일 int main(void) { int* pi; // 동적 할당 영역을 연결할 포인터 선언 double* pd; pi = (int*)malloc(sizeof(int)); // 메모리 동적 할당 후 포인터 연결 if (pi == NULL) // 동적 할당에 실패하면 NULL 포인터 반환 { printf("# 메모리가 부족합니다.\n"); // 예외 상황 메시지 출력 exit(1); // 프로그.. 2024. 4. 12.
🐨BOJ#6549 히스토그램에서 가장 큰 직사각형] 모노톤 스택(#1725히스토그램) 히스토그램에서 가장 큰 직사각형 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 54258 14782 9717 26.945% 문제 히스토그램은 직사각형 여러 개가 아래쪽으로 정렬되어 있는 도형이다. 각 직사각형은 같은 너비를 가지고 있지만, 높이는 서로 다를 수도 있다. 예를 들어, 왼쪽 그림은 높이가 2, 1, 4, 5, 1, 3, 3이고 너비가 1인 직사각형으로 이루어진 히스토그램이다. 히스토그램에서 가장 넓이가 큰 직사각형을 구하는 프로그램을 작성하시오. 입력 입력은 테스트 케이스 여러 개로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, 직사각형의 수 $n$이 가장 처음으로 주어진다. $(1 ≤ n ≤ 100,000)$ 그 다음 $n$개의 정수 $h_1, ... 2024. 4. 10.
C 언어 고급편]🚀 응용 포인터 목차 이중 포인터와 배열 포인터 이중 포인터 개념 - 이중 포인터는 포인터의 주소를 저장하는 포인터로, **ptr과 같이 선언되며, 포인터의 포인터. #include int main(void) { int a = 10;// int형 변수의 선언과 초기화 int* pi;// 포인터 선언 int** ppi;// 이중 포인터 선언 pi = &a;// int형 변수의 주소를 저장한 포인터 ppi = π// 포인터의 주소를 저장한 이중 포인터 printf("----------------------------------------------------\n"); printf("변수 변숫값 &연산 *연산 **연산\n"); printf("-----------------------------------------------.. 2024. 4. 7.
C언어 고급] 14🚀다차원 배열과 포인터 배열 목차 다차원 배열 2차원 배열 선언과 요소 사용 - int score[3][4]; // 3명의 네 과목 점수를 저장할 2차원 배열 선언 앞이 행, 뒤가 #include int main(void) { int score[3][4]; // 3명의 네 과목 점수를 저장할 2차원 배열 선언 int total; // 총점 double avg; // 평균 int i, j; // 반복 제어 변수 for (i = 0; i < 3; i++) // 학생 수만큼 반복 { printf("4과목의 점수 입력 : "); // 입력 안내 메시지 for (j = 0; j < 4; j++) // 과목 수만큼 반복 { scanf("%d", &score[i][j]); // 점수 입력 } } for (i = 0; i < 3; i++) // .. 2024. 4. 5.