본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 2675번: 문자열 반복 C언어

문제 출처: www.acmicpc.net/problem/2675

 

2675번: 문자열 반복

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

www.acmicpc.net

1. 코드

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

void print(char a[], int b)
{
    int i, j;
    
    for(i = 0; i < strlen(a); i++)
        for(j = 0; j < b; j++)
            printf("%c", a[i]);
    printf("\n");
}
int main(void)
{
    int i, j, n;
    char p[21];
    
    scanf("%d", &n);   
    for(i = 0; i < n; i++)
    {
        scanf("%d", &j);
        scanf("%s", p);
        print(p, j);
    }
    return 0;
}

2. 느낀점

우선 이 문제는 먼저 입력할 개수를 입력받고 알파벳을 몇 개씩 출력할지 한번 더 입력받고 문자열을 입력받고 입력받은 만큼 문자를 반복하여 출력하는 것이다.

그래서 처음에 n값을 통해 몇 개를 입력할지 입력받았고, 반복 횟수는 j를 통해 입력받았다. 문자열은 최대 갯수가 20개이므로 p배열에 입력받았다. 그리고 작성하다보니 삼중 반복문이 되어 있어서 가독성을 위해 함수로 따로 만들었다. 이 함수는 출력만을 위한 것이니 void형으로 함수를 만들었다. 그리고 문자열과 반복 횟수인 j를 전달하여 반복 출력을 하면 끝이다.

이 문제를 풀면서 다중 반복문은 편리할지는 모르겠지만 삼중 반복문부터는 조금 어질러진 모습을 하고 있다는 것을 조금 느꼈다. 그래서 다음과 같은 방법을 하거나 반복문을 안쓰는 방법으로 해결해야겠다.