1. 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;
}
  1. 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;
}
  1. 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);
}