본문 바로가기

C언어

3주차 C언어

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>


int main(void) {
    unsigned long long s;
    scanf("%llu", &s);

    unsigned long long left = 1;
    unsigned long long right = s;
    unsigned long long n= 0;

    while (left <= right) {
        unsigned long long mid = (left + right) / 2;
        unsigned long long sum = mid *(mid + 1) / 2;

        if (sum <= s) {
            n = mid;
            left = mid + 1;
        }
        else {
            right = mid - 1;
        }
    }

    printf("%llu\n", n);

    return 0;
}

1.수를 입력받습니다.

2.받을 수 있는 숫자가 매우 커질 수 있기에 unsigned long long을 사용해줍니다

3.while문을 이용해서 n을 찾아줍니다.

3-1.이때 이진탐색을 이용해서 숫자를 찾아줍니다.

4.출력합니다.

 

#define _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <stdlib.h>

int compare(const void* a, const void* b) {
    int A= *(int*)a;
    int B = *(int*)b;

    if (A > B) return 1;
    else if (A < B) return -1;
    else return 0;
}

int main(void) {
    unsigned int N;
    scanf("%u", &N);

    int* arr = (int*)malloc(N * sizeof(int));

    for (unsigned int i = 0; i < N; i++) {
        scanf("%d", &arr[i]);
    }

    qsort(arr, N, sizeof(int), compare);

    for (unsigned int i = 0; i < N; i++) {
        printf("%d\n", arr[i]);
    }



    return 0;
}

1.받아야하는 숫자가 커질 수 있으므로 unsigned int를 사용한다.

2. qsort함수에 사용될 compare함수를 미리 만들어둔다.

2-1,각 숫자가 서로 얼마나 차이나는지에 따라 1, -1, 0을 반환한다.

3.숫자들을 입력받는다.

4.미리 만들어둔 compare함수로 내장함수인 qsort함수를 이용해 비교한다.

5.출력한다. 

'C언어' 카테고리의 다른 글

5주차 C언어  (2) 2024.10.09
4주차 C언어  (1) 2024.10.05
6주차 C언어 추가 과제  (0) 2024.08.07
5주차_C언어  (0) 2024.07.31
C언어 3주차  (0) 2024.07.18