BackJoon_문자열 반복

Inhwan98·2023년 1월 30일
0

PTU STUDY_BACKJOON

목록 보기
5/21

문제

문자열 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를 출력한다.

예제

  • Example 1:
Input:
2
3 ABC
5 /HTP

Output:
AAABBBCCC
/////HHHHHTTTTTPPPPP

코드

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <cctype>
#include <vector>

using namespace std;

int main()
{
	string S;
	vector<string> vec;
	string P;

	int r;
	int a = 0;

	cin >> r;
	cin.ignore();
	for (int i = 0; i < r; i++)
	{
		getline(cin, S);
		
		vec.push_back(S);
	}

	for (string i : vec)
	{
		a = i.at(0) - '0';
		
		for(int k = 2; k < i.size(); k++)
		{
			for (int j = 0; j < a; j++)
			{
				P.push_back(i.at(k));
			}
		}
		cout << P << endl;
		P.clear();
	}
	return 0;
}

풀이

1.

cin >> r;
	cin.ignore();
	for (int i = 0; i < r; i++)
	{
		getline(cin, S);
		
		vec.push_back(S);
	}
  • 입력받은 개수 만큼 string S를 입력하여 vec에 추가 해준다.

2.

for (string i : vec)
	{
		a = i.at(0) - '0';
		
		for(int k = 2; k < i.size(); k++)
		{
			for (int j = 0; j < a; j++)
			{
				P.push_back(i.at(k));
			}
		}
		cout << P << endl;
		P.clear();
	}
  • vec를 차례대로 읽는다. string i의 가장 처음 인덱스는 반복할 숫자가 적혀있다. 이를 int형으로 변환하여 a에 할당한다.
  • string i의 2번째 index는 문자가 시작되는데, 이 문자를 각각 a번 반복해서 String P에 push_back 해준다.
  • 반복이 끝나면 P를 출력하고 초기화 시킨다.

결과

Runtime 0 ms / Memory 2024 KB


https://www.acmicpc.net/problem/2675

profile
코딩마스터

0개의 댓글