본문 바로가기

스터디/코딩

[ 코딩 도장 : C ] Unit 47. 회문 판별과 N-gram 만들기 : 연습문제 / 심사문제

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

문제) 정수 회문이란 앞 뒤가 같은 수를 의미합니다. 예) 121, 353, 11211 등. 다음 소스 코드를 완성하여 입력된 정수가 회문인지 판별하세요.

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

int main()
{
    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 만들기

문제) 다음 소스 코드를 완성하여 입력된 문자열을 문자 단위로 4-gram을 출력하세요. 만약 3글자 이하의 단어가 입력되면 wrong을 출력하세요.

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

int main()
{
    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.6 심사문제 : N-gram 만들기

문제) 표준 입력으로 정수와 길이 10 이하의 문자열이 입력됩니다. 입력된 문자열을 정수만큼 문자 단위로 N-gram을 출력하는 프로그램을 만드세요(scanf 함수 호출 전에 문자열을 출력하면 안 됩니다). 만약 입력된 문자열의 길이가 입력된 정수 미만이라면 wrong을 출력하세요.

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

int main()
{
    char text[11];
    int length;
    int n;

    scanf("%d %s", &n, 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;
}