Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

문타쿠, 공부하다.

[C언어 코딩 도장] Unit 47. 연습문제 및 심사문제 본문

C언어/C언어 코딩 도장

[C언어 코딩 도장] Unit 47. 연습문제 및 심사문제

개발새발 문타쿠 2023. 10. 3. 06:41

47.3 연습문제: 정수 회문 판별하기

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

int main(void)
{
    long long num1;
    char text[30];

    printf("정수를 입력하세요>> ");
    scanf("%lld", &num1);

    sprintf(text, "%lld", num1);

    int length;
    bool isPalindrome = true;

    length = strlen(text);

    int begin = 0;
    int end = length - 1;

    while (begin < end)
    {
        if (text[begin] != text[end])
        {
            isPalindrome = false;
            break;
        }

        begin++;
        end--;        
    }

    printf("%d\n", isPalindrome);

    return 0;
}


47.4 연습문제: 4-gram 만들기

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

int main(void)
{
    char text[30];
    int length;
    int n = 4;

    scanf("%s", text);

    length = strlen(text);

    if (length < n)
        printf("wrong\n");
    else
    {
        for (int i = 0; i < length - (n - 1); i++)
        {
            for (int j = 0; j < n; j++)
                printf("%c", text[i + j]);

            printf("\n");
        }
    }

    return 0;
}


47.5 심사문제: 공백이 포함된 회문 판별

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

int main(void)
{
    char text[31];
    int length;
    bool isPalindrome = true;

    printf("공백이 포함된 문자열을 입력해주세요>> ");
    scanf("%[^\n]s", text);

    length = strlen(text);

    if (length > 30)
    {
        printf("입력 가능한 문자열의 최대 길이는 공백을 포함하여 30 이하입니다.\n");
        return 1;
    }
    else
    {
        for (int left = 0, right = length - 1; left < right; left++, right--)
        {
            while (text[left] == ' ')
                left++;
            
            while (text[right] == ' ')
                right--;

            if (text[left] != text[right])
            {
                isPalindrome = false;
                break;
            };
        }

        if(isPalindrome)
            printf("입력한 문자열은 회문입니다.(%d)\n", isPalindrome);
        else
            printf("입력한 문자열은 회문이 아닙니다.(%d)\n", isPalindrome);
    }   

    return 0;
}


47.6 심사문제: N-gram 만들기

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

int main(void)
{
    int N;
    char word[11];

    printf("정수 입력>> ");
    scanf("%d", &N);

    printf("문자열 입력>> ");
    scanf("%s", word);
    printf("\n");

    int length = strlen(word);

    if (length > 10)
    {
        printf("입력 가능한 문자열의 최대 길이는 10입니다.\n");
        return 1;
    }
    else if (length < N)
    {
        printf("wrong\n");
        return 1;
    }
    else
    {
        for (int i = 0; i < length - N + 1; i++)
        {
            for (int j = i; j < i + N; j++)
            {
                printf("%c", word[j]);
            }
            printf("\n");
        }
    }

    return 0;
}