목록분류 전체보기 (111)
헬창 개발자

설계도 코드 class stack: def __init__(self): self.data= [] #스택 생성 self.cnt =0 def push(self,data): # 삽입 함수 self.data.append(data) self.cnt += 1 def isempty(self): # 공백 체크 return len(self.data)==0 def pop(self): # 삭제 함수 if not self.isempty(): self.cnt -= 1 return self.data.pop() def size(self): return len(self.data) def postfix(self, a): # 후위표기식 변경 self.temp = '' # 후위표기식 저장 for i in a: if i.isdigit():..

설계도 코드 #include #include #include #define MAX_NAME 20 // name 사이즈 정의 #define MAX_NUMBER 40 // number 사이즈 정의 typedef struct list { // 정보 저장 구조체 char name[MAX_NAME]; //이름 char number[MAX_NUMBER]; //전화번호 }list; typedef struct tree { // 노드 구조체 list key; //정보 저장 구조체 struct tree* left; // 링크 struct tree* right; // 링크 }tree; void insert(tree** root, list data) { // 삽입 함수 tree* p = NULL; //부모 노드 tree* t..

설계도 코드 #include #define MAX 5 // 배열의 범위 정의 typedef struct que { // 구조체 정의 int front; // 큐의 첫 요소의 앞을 가리킴 int rear; // 큐의 마지막 요소를 가리킴 int data[MAX]; // 큐 }que; int is_full(que *fx) { // 큐가 가득 찼는지 검사하는 함수 if ((fx->rear+1)%MAX == fx->front) return 1; // front+1의 값과 rear의 값이 같으면 가득참 else 0; } int is_empty(que* fx) { // 큐가 비어있는지 검사하는 함수 if (fx->front == fx->rear) return 1; // front의 값과 rear의 값이 같으면 비어..

https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 1..

#include #include #define TRUE 1 #define FALSE 0 #define MAX_VERTICES 50 typedef struct GraphType { int n;// 정점의 개수 int adj_mat[MAX_VERTICES][MAX_VERTICES]; } GraphType; int visited[MAX_VERTICES]; // 그래프 초기화 void init(GraphType* g) { int r, c; g->n = 0; for (r = 0; rn) + 1) > MAX_VERTICES) { fprintf(stderr, "그래프: 정점의 개수 초과"); return; } g->n++; } // 간선 삽입 연산 void insert_edge(GraphType* g, int sta..

#include #define MAX 100 typedef struct stacktype { // 스택 구조체 정의 char stack[MAX]; int top; }stacktype; void init(stacktype* s) { // 스택 초기화 함수 s->top = -1; } int is_full(stacktype* s) { // 스택 포화 검사 함수 return (s->top == MAX - 1); } int is_empty(stacktype* s) { // 스택 공백 검사 함수 return (s->top == -1); } char pop(stacktype* s) { // 스택 팝 함수 char out; // 입력 받을 변수 out = s->stack[(s->top)--]; // 스택에 상단에 있는..

#include typedef struct NodeList { //노드 리스트 구조체 struct NodeList* Llink; // L링크: 이전 노드를 가리킴 struct NodeList* Rlink; // R링크: 다음 노드를 가리킴 int data; // 데이터 }Node; void reverseprint(Node* head) { //노드 역출력 함수 Node* search;// 헤드가 가리키는 링크를 검색노드에 대입 -> 마지막 노드를 가리키는 것이다. printf("데이터 정상 출력\n"); for (search= head->Llink; search!=head ; search = search->Llink)// Llink를 타면서 정상방향으로 노드를 탐색한다. { printf("%d\n", se..

https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. ..

#include typedef struct NodeList { //노드 리스트 구조체 struct NodeList* link; // 다음 노드를 가리킴 int data; // 데이터 값 int row; // 행 int col; // 열 }Node; void insert(Node** head, Node** p, int data, int row, int col) { // 노드 리스트 생성 함수 (머리노드, 선행노드, 데이터, 행, 열) Node* NewNode = (Node*)malloc(sizeof(Node)); // NewNode 생성 NewNode->link = NULL; // 초기화 NewNode->data = data; // NewNode 데이터 입력 NewNode->row = row; // New..

#include typedef struct NodeList { //노드 리스트 구조체 struct NodeList* link; // 링크: 이전 노드를 가리킴 int data; // 데이터: 데이터를 저장 }Node; int search(Node* head, int a) { //노드 검색 함수 int cnt = 0; // 카운터값 Node* search; // 구조체 포인터 생성 search = head; // search는 첫노드를 가리킴 while (search != NULL) // 머리 노드가 가리키는 링크값이 NULL이 아니면 실행 { if (search->data == a) { // 머리 노드가 가리키는 데이터값이 일치하면 실행 cnt++; // 카운터 증가 } search = search->l..