- 2161번 카드1
// 이예고운
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d", &n);
int card[1001];
for (int i = 1; i <= n; i++) {
card[i] = i;
}
while (n > 0) {
printf("%d ", card[1]);
for (int i = 1; i <= n; i++) {
card[i] = card[i + 1];
}
n--;
int temp = card[1];
for (int i = 1; i <= n; i++) {
card[i] = card[i + 1];
}
card[n] = temp;
}
return 0;
}
// 정재훈
#include <stdio.h>
int main() {
int N;
scanf("%d", &N);
int cards[1000];
for (int i = 0; i < N; i++) {
cards[i] = i + 1;
}
int front = 0;
int rear = N - 1;
while (front != rear) {
printf("%d ", cards[front]);
front = (front + 1) % N;
rear = (rear + 1) % N;
cards[rear] = cards[front];
front = (front + 1) % N;
}
printf("%d\\n", cards[front]);
}
// 정재훈
#include <stdio.h>
int main() {
int N;
scanf("%d", &N);
int cards[1000];
for (int i = 0; i < N; i++) {
cards[i] = i + 1;
}
int front = 0;
int rear = N - 1;
while (front != rear) {
printf("%d ", cards[front]);
front = (front + 1) % N;
rear = (rear + 1) % N;
cards[rear] = cards[front];
front = (front + 1) % N;
}
printf("%d\\n", cards[front]);
}
// 신서윤
#include<stdio.h>
int main() {
int N;
int arr[1000];
int temp;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
arr[i] = i + 1;
}
while (1) {
printf("%d\\n", arr[0]);
N -= 1;
if (N == 0) break;
for (int i = 0; i < N; i++) {
arr[i] = arr[i + 1];
}
temp = arr[0];
for (int i = 0; i < N; i++) {
arr[i] = arr[i + 1];
}
arr[N-1] = temp;
}
return 0;
}
- 1920번 수 찾기
// 이예고운
#include <stdio.h>
#include <stdlib.h>
int compare(const void* first, const void* second) {
int* a = (int*)first;
int* b = (int*)second;
if (*a < *b)
return -1;
else if (*a > *b)
return 1;
return 0;
}
int search(int arr[], int n, int num) {
int start, end, middle;
start = 0;
end = n - 1;
while (start <= end) {
middle = (start + end) / 2;
if (arr[middle] == num) {
return 1;
}
else if (arr[middle] < num) {
start = middle + 1;
}
else {
end = middle - 1;
}
}
return 0;
}
int main() {
int n, m;
scanf("%d", &n);
int* arr1 = (int*)malloc(sizeof(int) * n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr1[i]);
}
qsort(arr1, n, sizeof(int), compare);
int data;
scanf("%d", &m);
for (int i = 0; i < m; i++) {
scanf("%d", &data);
if (search(arr1, n, data) == 1) {
printf("1\\n");
}
else {
printf("0\\n");
}
}
free(arr1);
return 0;
}
// 정재훈
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
int num1 = *(int *)a;
int num2 = *(int *)b;
if (num1 < num2) {
return -1;
} else if (num1 > num2) {
return 1;
} else {
return 0;
}
}
int binary_search(int *arr, int n, int target) {
int low = 0;
int high = n - 1;
int mid;
while (low <= high) {
mid = (low + high) / 2;
if (arr[mid] < target) {
low = mid + 1;
} else if (arr[mid] > target) {
high = mid - 1;
} else {
return 1;
}
}
return 0;
}
int main() {
int n, m;
scanf("%d", &n);
int *array = (int *)malloc(sizeof(int) * n);
for (int i = 0; i < n; i++) {
scanf("%d", &array[i]);
}
qsort(array, n, sizeof(int), compare);
scanf("%d", &m);
int target;
for (int i = 0; i < m; i++) {
scanf("%d", &target);
printf("%d\\n", binary_search(array, n, target));
}
free(array);
return 0;
}
// 신서윤
//1920번 수찾기 - 시간초과
#include<stdio.h>
#include<stdlib.h>
int compare(const void* a, const void* b) {
if (*(int*)a > *(int*)b) {
return 1;
}
else {
return -1;
}
}
int arr[100000];
int main() {
int N, M, num;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%d", &arr[i]);
}
qsort(arr, N, sizeof(int), compare);
scanf("%d", &M);
for (int i = 0; i < M; i++) {
scanf("%d", &num);
if (num > arr[N - 1]) {
printf("0\\n");
}
else {
for (int j = 0; j < N; j++) {
if (num == arr[j]) {
printf("1\\n");
break;
}
else if (num<arr[j]) {
printf("0\\n");
break;
}
}
}
}
return 0;
}
- 1246번 온라인 판매
// 이예고운
#include <stdio.h>
#include <stdlib.h>
int compare(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int customer[1000001];
int main() {
int n, m;
scanf("%d %d", &n, &m);
for (int i = 0; i < m; i++) {
scanf("%d", &customer[i]);
}
qsort(customer, m, sizeof(int), compare);
int best_price = 0, max_profit = 0;
for (int i = 0; i < m; i++) {
int price = customer[i];
int max_egg = (m - i < n) ? m - i : n; // 팔 수 있는 계란의 수
int profit = price * max_egg;
if (profit > max_profit) {
max_profit = profit;
best_price = price;
}
}
printf("%d %d\\n", best_price, max_profit);
return 0;
}
// 정재훈
#include <stdio.h>
#include <stdlib.h>
int compare(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
int main() {
int N, M;
scanf("%d %d", &N, &M);
int P[1000];
for (int i = 0; i < M; i++) {
scanf("%d", &P[i]);
}
qsort(P, M, sizeof(int), compare);
int max = 0;
int best = 0;
for (int i = 0; i < M; i++) {
int p = P[i];
int count = (M - i < N) ? M - i : N;
int m = p * count;
max = (m > max) ? m : max;
best = (max == m) ? p : best;
}
printf("%d %d\\n", best, max);
}