별의 공부 블로그 🧑🏻‍💻
728x90
728x170

문제

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 T를 만든 후 출력하는 프로그램을 작성하시오.

다시 설명하자면, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 T를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다.

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

 

 

입력

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

 

 

출력

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

 

 

예제 입력

 2
 3 ABC
 5 /HTP

 

예제 출력

 AAABBBCCC
 /////HHHHHTTTTTPPPPP

 

 

힌트

 

 

출처

ACM-ICPC > Regionals > North America > Greater New York Region > 2011 Greater New York Programming Contest A번

· 문제를 번역한 사람: baekjoon
· 잘못된 데이터를 찾은 사람: pichulia

 

링크

 

 

코드

 

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
#include <iostream>
#include <string.h>    // strlen()
 
#define N 20
 
using namespace std;
 
int main()
{
    int num, cnt, len;
    char ary[N];
 
    cin >> num;
    for (int i = 0; i < num; i++) {
        cin >> cnt >> ary;
        len = strlen(ary);
        for (int j = 0; j < len; j++) {   // (!)
            for (int k = 0; k < cnt; k++) {   // (!)                                                                          
                cout << ary[j];
            }
        }
        cout << endl;
    }
    return 0;
}
 
cs

 


 

꽤나 어려웠던 문제.

맨 처음에는 1차원 배열을 사용해서 풀었는데 틀려버렸다.

아래는 2차원 배열을 사용하여 구현했던 코드.

 

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
31
32
33
#include <iostream>
#include <string.h>    // strlen()
 
#define N 1000
#define L 20
#define C 18
 
using namespace std;
 
int main()
{
    int num, cnt[C], flag = 0;
    char ary[N][L];
 
    cin >> num;
    for (int i = 0; i < num; i++) {
        cin >> cnt[i] >> ary[i];
    }
 
    for (int i = 0; i < num; i++) {
        while (1) {
            for (int j = 0; j < cnt[i]; j++) {    // cnt 만큼 반복                                                              
                cout << ary[i][flag];
            }
            flag++;
            if (flag == strlen(ary[i])) break;
        }
        cout << endl;
        flag = 0;
    }
 
    return 0;
}
cs


728x90
그리드형(광고전용)

'Problem Solving > BaekJoon Online Judge' 카테고리의 다른 글

[BOJ5622][C++] 다이얼  (0) 2017.10.27
[BOJ2908][C++] 상수  (0) 2017.10.26
[BOJ10829][C++] 이진수 변환  (0) 2017.10.26
[BOJ8741][C++] 이진수 합  (0) 2017.10.26
[BOJ10809][C++] 알파벳 찾기  (0) 2017.10.25
[BOJ11654][C++] 아스키 코드  (0) 2017.10.25
[BOJ10039][C++] 평균 점수  (0) 2017.10.25
[BOJ2920][C++] 음계  (0) 2017.10.25
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖