Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어로 역 문자열 패턴 출력하기 – 알고리즘과 코드 예제

문자열 str이 주어졌을 때, 이 문자열의 역순 패턴을 출력하는 것이 우리의 과제입니다. 패턴은 역순으로 한 줄씩 증가하는 형태를 가지며, 문자열의 모든 문자를 출력한 후에는 남은 자리를 별표(*)로 채워야 합니다.

예를 들어 "abcd"라는 문자열을 입력했다고 가정해 보겠습니다. 첫 번째 줄에는 "a"를 출력하고, 두 번째 줄에는 "cb"를, 세 번째 줄에는 "**d"를 출력하면 됩니다.

예시

입력: str[] = { "abcd" }
출력: a
c b
* * d

설명

  • 첫 번째 줄에는 1개의 문자를 출력합니다.
  • 두 번째 줄에는 2개의 문자를 역순으로 출력합니다.
  • 세 번째 줄에는 3개의 문자를 역순으로 출력하되, 문자열 길이가 3보다 짧으면 출력할 수 있는 문자를 먼저 출력하고 빈자리는 *로 채웁니다.
입력: str[] = {"tutorialspoint"}
출력:

C 언어로 역 문자열 패턴 출력하기 – 알고리즘과 코드 예제

문제 해결 접근 방식

  • i=0부터 문자열을 순회하면서 i<n && k<(n-i)*2 조건이 참인지 검사합니다.
  • 변수 k를 선언하고 ((i*(i+1))/2)-1 값으로 설정합니다.
  • k가 n-1보다 크거나 같으면 "*"를 출력하고, 그렇지 않으면 문자열의 값을 역순으로 출력합니다.

알고리즘

시작
함수 int reverse_it(char str[], int n)
    단계 1-> 변수 i, j=0, k=0 선언 및 초기화
    단계 2-> 반복문 For i=0, i<n && k<(n-i)*2, i++
        k를 ((i*(i+1))/2)-1 값으로 설정
        반복문 For j=0, j<i && k<(n-i)*2, j++
            만약 k >= n-1이면,
                "* " 출력
            아니면
                printf("%c ", str[k]) 실행
                k를 1만큼 감소
            반복문 종료
        줄 바꿈 출력
    반복문 종료
함수 int main(int argc, char const *argv[])
    단계 1-> 문자열 str[] 선언 및 초기화
    단계 2-> size를 sizeof(str)/sizeof(str[0]) 값으로 선언 및 초기화
    단계 3-> reverse_it(str, size) 함수 호출
종료

C 코드 예제

#include <stdio.h>
int reverse_it(char str[], int n) {
    int i, j=0 , k=0;
    for(i=0; i<n && k<(n-i)*2; i++) {
        //k 값 할당
        k = ((i*(i+1))/2)-1;
        for(j=0; j<i && k<(n-i)*2; j++) {
            //k가 전체 문자 수보다 크거나 같은지 확인
            //그렇다면 남은 자리를 채우기 위해 * 출력
            if(k >= n-1)
                printf("* ");
                //문자열을 역순으로 출력
            else
                printf("%c ",str[k]);
                k--;
        }
        //역순 시퀀스 출력 후 줄 바꿈
        printf("\n");
    }
    return 0;
}
//메인 함수
int main(int argc, char const *argv[]) {
    char str[] = {"tutorialspoint"};
    int size = sizeof(str)/sizeof(str[0]);
    reverse_it(str, size);
    return 0;
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다 −

C 언어로 역 문자열 패턴 출력하기 – 알고리즘과 코드 예제