티스토리 뷰

2675번: 문자열 반복
첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다.
https://www.acmicpc.net/problem/2675
#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)
20200366

➕ 재풀이

예제가 잘 나오는데 자꾸 틀려 확인해보았다.

#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

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
«   2025/07   »
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
링크
Total
Today
Yesterday