https://www.acmicpc.net/problem/2512 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 N이 주어진다. N은 3 이상 10,000 이하이다. 다음 줄에는 각 지방의 예산요청을 표현하는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 값들은 모두 1 이상 www.acmicpc.net #include // 예산 int binary_search(int low, int high, int*arr, int n, int m) { int sum; int mid = (low + high) / 2; while (high >= low) { sum = 0; mid = (high + low) / 2; for (int i = 0; i mid) { s..
https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X www.acmicpc.net #include // 괄호의 값 #include #include // 스택에 문자를 저장하는 것이아닌 숫자로 저장 #define round -1 #define angled -2 typedef struct { int ptr; int*stk; }STACK; int is_empty(STACK* s) { if (s->ptr stk[(s->ptr)++] = data; } int pop(STACK* s..
https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net ~~ 1 ~~ #include // 유기농 배추 #include int graph[51][51]; int visit[51][51]; int dx[4] = { 1, -1, 0, 0 }; int dy[4] = { 0, 0, 1, -1 }; int ans = 0; void dfs(int y, int x, int m, int n) { visit[y][x] = 1; for (int i = 0; i < 4; i++) {..
https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net #include // 베스트셀러 #include #include typedef struct { char name[51]; int cnt; }book; int compare(void* a, void* b) { if (strcmp(a, b) > 0) return 1; else return -1; } int main() { int n; scanf("%d", &n); book b[1000]; ch..
https://www.acmicpc.net/problem/5430 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net #include // AC #include #include typedef struct { struct node* next; struct node* prev; int data; }node; typedef struct { node* front; node* rear; int cnt; }DEQUE; int is_empty(DEQUE* d) { if (d->cnt next = d->front; newnode->prev = NULL; newnode->data = ..
https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net #include // 카드 정렬하기 #include typedef struct { int data; }node; typedef struct { node arr[100001]; int size; }HEAP; void push(HEAP* h, int num) { int i; i = ++(h->size); while ((i != 1) && num arr[i / 2].data) {..
https://www.acmicpc.net/problem/11286 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net #include // 절댓값 힙 #include typedef struct { int data; }node; typedef struct { node arr[100001]; int size; }HEAP; void push(HEAP* h, int num) { int i; i = ++(h->size); while (i != 1 && (abs(num) arr[i / 2].data))..
https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net #include // 나는야 포켓몬 마스터 이다솜 #include #include typedef struct { char name[21]; int num; }node; int compare(void* first, void* second) { node* a = (node*)first; node* b = (node*)second; if (strcmp(a->name, b->..
https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net #include // 최소 힙 int heap[100001]; void push(int num, int *ptr) { int i = 0; i = ++(*ptr); while (i != 1 && num < heap[i / 2]) { heap[i] = heap[i / 2]; i /= 2; } heap[i] = num; } int pop(int *ptr) { int root, tem..
https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 값이 너무 커져서 구현 x { int t; scanf("%d", &t); unsigned long long int combination[30][30]; combination[1][0] = combination[1][1] = 1; for (int i = 2; i