목록분류 전체보기 (108)
헬창 개발자
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..
https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 문제 옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다. 길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자. S = A[0]×B[0] + ... + A[N-1]×B[N-1] S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다. S의 최솟값을 출력하..