반응형

문자열 반복해서 새로운 문자열을 만드는 문제

문제만보면 되게 쉬워보이는데 이전에 제출한게 틀려있길래 간만에 겸사겸사 풀어봄

 

 

 

 

 

 

 

#include <bits/stdc++.h>
using namespace std;

//횟수만큼 반복해서 새로운 문자열 만들어주는 함수
int makeStr(int cnt, string str){
	//한번씩 출력할 문자열
	string tmpStr;
	
	for(int i=0; i<str.length(); i++){
		for(int j=0; j<cnt; j++){
			tmpStr += str[i];
		}
	}
	cout << tmpStr;
	return 0;
}

int main() {
	//전체 반복 횟수
	int totalCnt = 0;
	cin >> totalCnt;
	
    //makeStr 함수 호출 시 사용되는 변수 (횟수와 문자열)
	int tmpCnt = 0;    
	string tmpStr;
    
	for(int i=0; i<totalCnt; i++){
		cin >> tmpCnt;
		cin >> tmpStr;
		if(i>0) cout << "\n";
        //첫번째 입력이면 한번 출력 후 new line 필요없으므로
        //출력이 1이상일때부터 출력하도록 함
		makeStr(tmpCnt, tmpStr);
	}	
	return 0;
}

 

 

처음에 풀때는 메인함수에서 입력을 다 처리해주다가

그냥 문자열을 새로 만들어주는 함수 makeStr을 작성해서 호출하도록 했다

 

문자열 특성 상 배열처럼 인덱스 접근이 가능하므로

새로 만들 임시 문자열 tmpStr에 할당 연산자(+=)로 반복해야 하는 횟수만큼

i번째 문자열을 j(=cnt)번만큼 더해주었다

 

 

 

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

 

 

2675번: 문자열 반복

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다

www.acmicpc.net

 

반응형

+ Recent posts