티스토리 뷰

문자열 반복

문제

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다.

QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다.

입력

첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다.

출력

각 테스트 케이스에 대해 P를 출력한다.

예제 입력

2
3 ABC
5 /HTP

예제 출력

AAABBBCCC
/////HHHHHTTTTTPPPPP

해설

중첩 for 문을 사용하여 문제를 해결할 수 있다. 첫 번째 for 문은 입력받은 테스트 횟수(times)만큼 테스트를 반복하기 위한 for문이다. 다음은 입력받은 문자열 str[0]부터 시작해서 마지막 문자까지 차례대로 인쇄하기 위한 for 문이다. 마지막이 하나 문자를 반복 횟수(rep)만큼 출력하기 위한 for 이다. 이 세 for문을 자례대로 반복하면 원하는 출력을 얻을 수 있다. 이때 줄바꿈을 위한 printf(“\n”);의 위치와 strlen() 함수를 쓰지 않고 문자열 처음부터 끝까지 반복하기 위해 for 문에 str[j] != ‘\0’이나 *(str +j) != ‘\0’조건을 설정하는 것 등이 세부적으로 고려할 부분이다.

            for (j = 0; *(str + j) != '\0'; j++)
            {
                for(k = 0; k < rep; k++)
                {
                    printf("%c", str[j]);
                }
            }

이런 부분을 고려하여 코드를 완성하면 아래와 같다.

소스코드: C

    #include <stdio.h>

    int main()
    {
        int i, j, k, times, rep;
        char str[20];

        scanf("%d", &times);
        for (i = 0; i < times; i++)
        {
            scanf("%d", &rep);
            scanf("%s", str);
            for (j = 0; *(str + j) != '\0'; j++)
            {
                for(k = 0; k < rep; k++)
                {
                    printf("%c", str[j]);
                }
            }
            printf("\n");
        }
        return 0;
    }

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
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
글 보관함
11-26 02:29