본문 바로가기

C언어

4주차 C언어

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


int main(void) {
    int x;
    scanf("%d", &x);

    int n = 1;
    int position = 0;

    while (position + n < x) {
        position += n;
        n += 1;
    }

    int r_position = x - position;
    int 분자, 분모;

    if (n % 2 == 0) {
        분자 = r_position;
        분모 = n - r_position + 1;
    }
    else {
        분자 = n - r_position + 1;;
        분모 = r_position;
    }

    printf("%d/%d\n", 분자, 분모);


    return 0;
}

1,문제에서 말하는 x의 값을 입력받는다.

2.while문을 통하여 현재 대각선의 위치가 어디인지 확인한다. 

2-1.이때 대각선의 수를 찾는 방법은 1+2+3+4.... 를 하나하나 더해서 찾는 방식이다. 

3,분자와 분모를 확인한다,

3-1.이때 홀수 대각선인지 짝수 대각선인지에 따라 분모와 분자가 증가하는 방식이 달라진다. 

4. 위 조건을 고려하여 분자와 분모를 확인 후 출력한다. 

 

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

int compare(const void* a, const void* b) {
    char* wordA = *(char**)a;
    char* wordB = *(char**)b;

    int lenA = strlen(wordA);
    int lenB = strlen(wordB);

    if (lenA != lenB) {
        return lenA - lenB;
    }

    return strcmp(wordA, wordB);
}


int main(void) {
    int n;
    char* word[20000];
    char buffer[51];

    scanf("%d", &n);

    for (int i = 0; i < n; i++) {
        word[i] = (char*)malloc(51 * sizeof(char));
        scanf("%s", word[i]);
    }

    qsort(word, n, sizeof(char*), compare);

    printf("%s\n", word[0]);  
    for (int i = 1; i < n; i++) {
        if (strcmp(word[i], word[i - 1]) != 0) {  
            printf("%s\n", word[i]);
        }
    }

    for (int i = 0; i < n; i++) {
        free(word[i]);
    }

    return 0;
}

1.단어의 수를 입력받고 단어들의 배열, 각 칸에 들어갈 배열을 또 따로 만든다. (2차원 배열 느낌)

2.단어를 입력받을 땐 malloc을 사용하여 입력을 받는다.

3.qosrt함수를 사용한다. 이때 단어의 길이가 같을 때를 고려하여 정렬한다.

4. 정렬된 단어 배열을 출력한다. 이때 이미 나왔던 단어인지 고려한다.

5.malloc으로 할당했던 메모리 공간을 free로 해지한다. 

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

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