백준 2675번 (문자열 반복, C++) [BAEKJOON]

문자열 반복

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

시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초128 MB156536789146742550.437%

문제

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

예제 입력 1

2
3 ABC
5 /HTP

예제 출력 1

AAABBBCCC
/////HHHHHTTTTTPPPPP

출처

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

  • 문제를 번역한 사람: baekjoon
  • 문제의 오타를 찾은 사람: jh05013
  • 잘못된 데이터를 찾은 사람: pichulia

알고리즘 분류


S에 alphanumeric 문자만 들어올 수 있다고 해서 고민한 문제

(https://ko.wikipedia.org/wiki/%EC%98%81%EC%88%AB%EC%9E%90)

몰라도 아무 지장이 없다

결국 문자열 S의 각 문자를 R번씩 반복하여 출력하는 문제

ex > 3 ABC

AAABBBCCC

해당 과정을 수행하기 위해서 반복문을 어떻게 구성할 것인가만 생각해내면 구현은 어렵지 않다.

통과된 코드

#include <iostream>
#include <list>

using namespace std;

list<pair<int, string>> pairList;
list<pair<int, string>>::iterator it;
pair<int, string> myPair;

int main()
{
	int N = 0;

	string temp = "";

	cin >> N;

	while (N-- > 0) { 

		// myPair.first : 반복 횟수, myPair.second : 문자열
		cin >> myPair.first >> myPair.second; 

		pairList.push_back(myPair); // 리스트에 추가

	}
	
	// 리스트를 순회
	for (it = pairList.begin(); it != pairList.end(); it++) {
		
		//문자열 초기화
		temp = "";

		// 문자열의 길이만큼 반복 (모든 문자열을 R만큼 반복함)
		for (int j = 0; j < it->second.length(); j++) { 

			// j 인덱스 문자를 R번 반복(it->first)
			for (int i = 0; i < it->first; i++) {

				// temp 문자열에 추가
				temp.push_back(it->second[j]);
			}
		}

		cout << temp << "\n";

	}

	return 0;

}

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤