#include <stdio.h>

// 입력: 배열 a - 길이를 구하고자 하는 문자열
// 출력: 문자열 a의 길이
int get_len(char a[100])
{
    // 널 문자가 있는 인덱스 구하기
    // (만약 a[i]쨰가 \0이란건 배열의 
    // 끝까지 왔다는 것이므로 i를 리턴한다.
    for (int i = 0; ; i++) if (a[i] == '\0') return i;
}

// 입력: 문자형 배열(문자열) x - 전체 문자열
//        정수형 변수 s - 문자열 x의 시작점
//        정수형 변수 e - 문자열 x의 끝점
//        문자형 배열(문자열) y - 부분 문자열
// 출력: 문자열 x[s...e]와 문자열 y가 같으면 1, 아니면 0 반환
int is_ok(char x[100], int s, int e, char y[100])
{
    // 배열 x의 길이(끝점 - 시작점 + 1)
    int n = e - s + 1; 

    // 배열 y의 길이
    int m = get_len(y); 

    // 만약 배열 x와 y의 길이가 같지 않다면 프로그램 끝내기
    if (n != m) return 0; 

    for (int i = s, j = 0; i <= e; i++, j++) 
        // 만약 배열 시작 부분부터 끝까지
        // 부분 문자열이 있지 않다면 프로그램 끝내기
        if (x[i] != y[j]) return 0;

    // 부분 문자열이 전체 문자열에 있다면
    // 프로그램 끝내기
    return 1;
}
int main()
{
    //s = 전체 문자열, t = 부분 문자열
    char s[100], t[100]; 
    // n = s 배열의 길이, m = t 배열의 길이
    int n, m; 

    scanf("%s", s);
    scanf("%s", t);

    // 배열 s와 t의 길이를 변수 n, m에 저장한다.
    n = get_len(s);
    m = get_len(t);

    // i는 시작점
    for (int i = 0; i < n; i++) 
    {
        //j는 끝점
        for (int j = i; j < n; j++)
        {
            // 만약 is_ok 함수에서
            // 부분 문자열이 전체 문자열에 표함되있다는 결과가 나왔다면.
            if (is_ok(s, i, j, t) == 1) 
            {
                // O를 출력한 후 프로그램을 끝낸다.
                printf("O");
                return 0;
            }
        }
    }
    // 확인을 했는데도 프로그램이 끝나지 않았다면 
    // 검색이 안되는 경우이므로 X를 출력한다.
    printf("X");
}

'SFPC > 2022' 카테고리의 다른 글

2022 SFPC pB0  (0) 2023.02.22
2022 SFPC pB1  (0) 2023.02.22
2022 SFPC pA0  (0) 2023.02.22
2022 SFPC E1  (0) 2023.02.21
2022 SFPC E0  (0) 2023.02.21
2022 SFPC D1  (0) 2023.02.19

A0 설명

#include <stdio.h>

int main()
{
	printf("UAGCCGAU");
}

'SFPC > 2022' 카테고리의 다른 글

2022 SFPC D0  (0) 2023.02.18
2022 SFPC C0  (0) 2023.02.17
2022 SFPC B0  (0) 2023.02.17
2022 SFPC B1  (0) 2023.02.16
2022 SFPC A1  (0) 2023.02.03
2022 SFPC pE1 ver.2  (0) 2023.02.02
#include <stdio.h>

int main()
{
    // 부모의 혈액형 인자 정보 저장 배열
    char m[5], f[5];

    scanf("%s %s", &m, &f);

    // A형이 한 번만 출력되도록 하는 변수
    int countA = 0;

    // AB형이 한 번만 출력되도록 하는 변수
    int countB = 0;

    // B형이 한 번만 출력되도록 하는 변수
    int countAB = 0;

    // O형이 한 번만 출력되도록 하는 변수
    int countO = 0; 

    // A형을 채크한다.
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            // 만약 A형의 조건을 충족시킨다면
            // A를 출력하고 다음에 안 나오게 하기 위해 countA에 1 더해준다.
           if ((m[i] == 'A' && f[j] == 'O' && countA == 0) || 
               (m[i] == 'A' && f[j] == 'A' && countA == 0) ||
               (m[i] == 'O' && f[j] == 'A' && countA == 0))
           {
                printf("A ");
                countA++;
            }
        }
    }

    // AB형을 채크한다.
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            // 만약 AB형의 조건을 충족시킨다면
            // AB를 출력하고 다음에 안 나오게 하기 위해 countAB에 1 더해준다.
            if ((m[i] == 'A' && f[j] == 'B' && countAB == 0) ||
                (m[i] == 'B' && f[j] == 'A' && countAB == 0))
            {
                printf("AB ");
                countAB++;
            }
        }
    }

    // B형을 채크한다.
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            // 만약 B형의 조건을 충족시킨다면
            // B를 출력하고 다음에 안 나오게 하기 위해 countB에 1 더해준다.
            if ((m[i] == 'B' && f[j] == 'O' && countB == 0) ||
                (m[i] == 'B' && f[j] == 'B' && countB == 0) ||
                (m[i] == 'O' && f[j] == 'B' && countB == 0))
            {
                printf("B ");
                countB++;
            }
        }
    }

    // O형을 채크한다.
    for (int i = 0; i < 2; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            // 만약 O형의 조건을 충족시킨다면
            // O를 출력하고 다음에 안 나오게 하기 위해 countO에 1 더해준다.
            if (m[i] == 'O' && f[j] == 'O' && countO == 0)
            {
                printf("O ");
                countO++;
            }
        }
    }
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC B0  (0) 2023.02.09
2021 SFPC B1  (0) 2023.02.09
2021 SFPC A0  (0) 2023.02.08
2021 SFPC pE0  (0) 2023.02.07
2021 SFPC pE1  (0) 2023.02.07
2021 SFPC pD1  (0) 2023.02.06

+ Recent posts