[문제]
문자열 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를 출력한다.
첫번째 시도는 다음과 같다. T를 for문을 통해서 돌렸는데, 계속해서 컴파일 에러가 났다.
(참고로, strlen(S) 대신에 R를 사용했는데, 이건 아예 틀렸다고 답이 나온다.. 분명 예제 입출력데로 나오는데도 말이다.
이유는 "문제"의 입력형식데로 맞춰야 하기 때문이라고 추정된다)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include <stdio.h>
#include <string.h>
int main()
{
int T, R;
char S[21];
scanf("%d", &T);
for(int i=0; i<T; i++){
scanf("%d %s", &R, &S);
for(int j=0; j<strlen(S); j++){
for (int k=0; k<R; k++){
printf("%c", S[j]);
}
}
printf("\n");
}
return 0;
}
|
cs |
결국 여러 번 시도한 끝에, for문을 바꿔야 하는 것으로 결론이 났다.
(다음과 같이 해야 제대로 맞았다고 나온다. while문을 통해서 T를 계속 하나씩 뺀다)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
#include <stdio.h>
#include <string.h>
int main() {
int T, R;
char S[21];
scanf("%d", &T);
//T만큼의 테스트케이스
while (T--) {
scanf("%d %s", &R, S);
//결과를 출력하기 위한 반복문
for (int i = 0; i < strlen(S); i++) {
for (int j = 0; j < R; j++)
printf("%c", S[i]);
}
printf("\n");
}
return 0;
}
|
cs |
'코딩 문제풀이 및 연습 > [C언어]백준' 카테고리의 다른 글
[백준 10818번] 최소, 최대 (0) | 2021.03.18 |
---|---|
[백준 6749번]Next in line (0) | 2021.03.17 |
[백준 9012번] Parenthesis (0) | 2020.10.08 |
[백준 2795번] Transactions (0) | 2020.09.05 |
[백준 2753번] 윤년 (0) | 2020.09.05 |