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


#include <iostream>
#include <cstring>
using namespace std;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int T = 0;
cin >> T;
for (int i = 0; i < T; i++)
{
int R = 0;
char arr[21] = {};
cin >> R >> arr;
for (int j = 0; j < strlen(arr); j++)
{
for (int k = 0; k < R; k++)
{
cout << arr[j];
}
}
cout << '\n';
}
}
메모리 (KB) | 시간 (ms) | 코드 길이 (B) |
2020 | 0 | 366 |
➕ 재풀이
예제가 잘 나오는데 자꾸 틀려 확인해보았다.
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
cin.tie(NULL);
ios_base::sync_with_stdio(false);
int T = 0;
cin >> T;
for (int i = 0; i < T; i++)
{
int R = 0;
char arr[20] = {};
cin >> R >> arr;
for (int j = 0; j < strlen(arr); j++)
{
for (int k = 0; k < R; k++)
{
cout << arr[j];
}
}
cout << '\n';
}
}

S의 길이가 20을 넘지 않는다고 적혀있다. 그래서 처음에는 아! 19까지 입력 제한이 19까지인가보군! 이라는 생각에 arr[20]
으로 적어서 틀렸다. arr[21]
로 고치니 바로 맞았다.
왜?
char 배열의 경우, string과는 달리 마지막 인덱스에 null 문자가 들어있기 때문에 사용하려는 배열의 실제 크기보다 1이 더 커야 한다.
Uploaded by N2T