본문 바로가기
프로그램/C언어 1000제

C언어 162제] 2011년 ICPC 북아메리카 뉴욕지역예선 A번 문자열 반복

by 건티 2024. 9. 11.
728x90

출처 : 반크_세계유산 창덕궁

 

문제]

문자열 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를 출력한다.

예제 입력 1 
2
3 ABC
5 /HTP


예제 출력 1 
AAABBBCCC
/////HHHHHTTTTTPPPPP

 

 

출처 : 백준_2675번

 

참고풀이]

#include <stdio.h>
#include <stdlib.h>//malloc(), free() : 동적메모리 설정과 해제함수. 
#include <string.h> //strlen():문자열의 문자의 개수 구하는 함수.

int main()
{
   int T;//테스트 케이스의 개수 입력변수 
   int r,c,i,j;//인덱스 또는 반복변수
   int chk;//조건에 맞지 않는 문자여부 체크변수 
   int R;//반복횟수 변수
   char S[21];//반복대상 문자열 변수
   char *QR_Code="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ₩$%*+-./:";

   //테스트 케이스를 입력받는다.
   scanf("%d",&T);
   //테스트 케이스는 1~1000사이의 수가 입력된다.
   if(T>=1 && T<=1000) 
   {
      //각 테스트 케이스의 반복횟수와 
      //반복할 문자열을 입력받는다.
      for(r=1;r<=T;r++)
      {
         scanf("%d%s",&R,S);
         if((R>=1 && R<=8) && (strlen(S)>=1 && strlen(S)<=20))
        {
            //QR_Code에 포함된 문자인지 여부 체크한다. 
            for(c=0; c<strlen(S);c++)
            {
               chk=0;
               for(i=0;i<strlen(QR_Code);i++)
                  if(S[c]==QR_Code[i])
                  {
                     chk=1; break;
                  }
               if(!chk) return 0;
            }
            //결과 저장할 동적메모리 문자열을 선언
            char *P=(char *)malloc(sizeof(char)*(R*strlen(S))+1);
            P[R*strlen(S)]='\0';

            //출력할 반복문자열을 구한다. 
            for(j=0,c=0;c<strlen(S);c++)
               for(i=1;i<=R;i++)
                  P[j++]=S[c];

            //결과출력
            printf("%s\n",P);

            //동적메모리 해제
            free(P);
         }
         else return 0; 
      }
   }

   return 0;
}

 

참고풀이 결과]

 

 

 

 

 

대한민국의 아름다운 영토, 독도

 

 

반응형

댓글