본문 바로가기

C언어

2025년 여름학기 7주차 C언어

 

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

typedef struct {
    int x, y;
} point; //좌표를 point로 표시한다. 굳이 할 필요는 없다

// 두 점 사이 거리의 제곱을 계산
int dis(point a, point b) {
    int dx = a.x - b.x;
    int dy = a.y - b.y;
    return dx * dx + dy * dy;
}

// 정수 오름차순 비교 함수
int compare(const void *a, const void *b) {
    return (*(int *)a - *(int *)b);
}

// 정사각형인지 판단
int square(point p[4]) {
    int d[6];
    int index = 0;

    // 6개의 거리(변 4개, 대각선 2개)의 제곱을 구한다.
    for (int i = 0; i < 4; i++) {
        for (int j = i + 1; j < 4; j++) {
            d[index++] = dis(p[i], p[j]);
        }
    }

    // 거리 정렬한다. 변 4개가 앞으로 오고 대각선 2개가 뒤로 온다. 아래의 return문을 위해서 필요하다. 
    qsort(d, 6, sizeof(int), compare);

    if (d[0] == 0) return 0;

    // 정사각형 조건: 변 4개 같으며 대각선 2개가 서로 같다. 변 < 대각선
    return (d[0] == d[1] &&
            d[1] == d[2] &&
            d[2] == d[3] &&
            d[4] == d[5] &&
            d[0] < d[4]);
}

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

    while (T--) {
        point p[4];
        for (int i = 0; i < 4; i++) {
            scanf("%d %d", &p[i].x, &p[i].y);
        }
        printf("%d\n", square(p));
    }

    return 0;
}

 

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

#define MAX_INPUT 3001
#define MAX_SEQ 1000000

char input[MAX_INPUT];
char seq[MAX_SEQ];

//부분 수열을 비교하는 부분이다
//같은 수가 몇 번 나왔는지의 방식으로 부분수열을 검사한다
int fun(char *input, char *seq) {
    int i = 0, j = 0;
    int len_input = strlen(input);
    int len_seq = strlen(seq);
    while (i < len_input && j < len_seq) {
        if (input[i] == seq[j]) {
            i++;
        }
        j++;
    }
    return i == len_input;
}

int main() {
    scanf("%s", input);
    

    seq[0] = '\0';
    int N = 1;
    //숫자 1부터 비교를 시작할거기 때문에 시작하는 값을 1로 해준다

    while (1) {
        char temp[12];
        sprintf(temp, "%d", N);
        strcat(seq, temp);
   

        if (fun(input, seq)) {
            printf("%d\n", N);
            break;
        }

        N++;
        //만족하는 숫자(마지막 숙자)가 나올 때 까지 N의 값을 1씩 증가시킨다
    }

    return 0;
}

 

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

2025년 여름학기 9주차 C언어  (0) 2025.08.24
2025년 여름학기 8주차 C언어  (2) 2025.08.17
2025년 여름학기 6주차 C언어  (1) 2025.08.02
2025년 여름학기 5주차 C언어  (1) 2025.07.27
2025년 여름학기 4주차 C언어  (3) 2025.07.19