https://www.acmicpc.net/problem/9935 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net #include // 문자열 폭발 #include #include typedef struct { char* stk; int size; }STACK; void push(STACK* s, char data) { s->stk[(s->size)++] = data; } void pop(STACK* s) { --(s->size); } char str[1000001]; int main() { s..
https://www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net #include // 좋은 단어 #include #include typedef struct { char stk[100001]; int size; }STACK; int is_empty(STACK* s) { if (s->size stk[(s->size)++] = data; } void pop(STACK* s) { --(s->size); } char top(STACK* s) { int temp = s->size;..
https://www.acmicpc.net/problem/2161 2161번: 카드1 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net #include // 카드1 #include typedef struct { struct node* next; int data; }node; typedef struct { node* rear; node* front; int size; }QUEUE; void init_QUEUE(QUEUE* q) { q->front = q->rear = NULL; q->size = 0; } int is_empty(QU..
https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net #include // 공유기 설치 #include int arr[200001]; int compare(void* first, void* second) { int* a = (int*)first; int* b = (int*)second; if (*a > *b) return 1; else if (*a < *b) return -1; else return..
https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net #include // RGB거리 int min(int x, int y) { return x < y ? x : y; } int arr[1001][4]; int dp[1001][4]; int main() { int n; scanf("%d", &n); for (int i = 1; i
https://www.acmicpc.net/problem/1654 1654번: 랜선 자르기 첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 www.acmicpc.net #include // 랜선 자르기 #include int arr[10001] = { 0, }; long long binary_search(int max, int k, int n) { long long left = 1, right = max, cut_max = 0; long long mid; while (left = n) { if (cut_max < mid) cut_ma..
https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net #include // 나무 자르기 int arr[1000001] = { 0, }; int binary_search(int end, int n, int m) { int min, max, mid = 0, cut_max = 0; min = 1; max = end; while (min mid) sum += (long long)(arr[i] - mid); } if (..
https://www.acmicpc.net/problem/6588 6588번: 골드바흐의 추측 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 www.acmicpc.net include // 골드바흐의 추측 int arr[1000001] = { 0, }; int main() { for (int i = 2; i < 1000001; i++) { if (arr[i] == 1) continue; for (int j = 2; i * j < 1000001; j++) { arr[i * j] = 1; } } int num; while (1) { scanf(..
https://www.acmicpc.net/problem/2417 2417번: 정수 제곱근 정수가 주어지면, 그 수의 정수 제곱근을 구하는 프로그램을 작성하시오. www.acmicpc.net #include // 정수 제곱근 #include int main() { long long int n; scanf("%lld", &n); long long int ans = (long long)sqrt(n); if (ans * ans < n) printf("%lld", ans + 1); else printf("%lld", ans); return 0; } MEMO -- math.h의 sqrt()를 이용하여 해결 !! sqrt()는 실수를 반환함을 기억 !!