문자열 반복
https://www.acmicpc.net/problem/2675
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 156536 | 78914 | 67425 | 50.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번
알고리즘 분류
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; }