[BOJ 백준] 2675 - 문자열 반복 (C++ / Python)

문제 바로가기

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


관련 알고리즘

- 해당 없음


정답 및 해설

테스트케이스의 개수를 입력받은 후 정수와 문자열을 받아서 문자열 내의 각 문자를 정수만큼 반복 출력하는 문제이다.

별다른 알고리즘 없이 문제에서 제시한 그대로 코드만 구현하면 된다.

C++

더보기
#include<bits/stdc++.h>
using namespace std;
int main(){
    string S;
    int T,N;
    cin>>T;
    while(T--){
        cin>>N;
        cin>>S;
        for(int i=0;i<S.length(); i++){
            for(int j=0; j<N; j++)
                cout<<S[i];
        }
        cout<<'\n';
    }
}

 

Line 해설
4 string 타입 변수 S를 생성한다. 문제 조건에서 20자 이내의 문자열이라 했으므로
char s[20] 로 정의해도 무관하다
7 while(T--) 문으로 반복에 들어간다. 조건을 T--로 잡으면 변수 T가 0이 아닌 경우 계속 반복한다.
for(int i=0; i<T; i++) 와 비슷하게 동작하는 것이다.
10~14 첫번째 for문에서 문자열내의 각 문자를 돌면서 두번째 for문으로 N만큼 반복 출력한다.

※ 위 코드에서 문자열을 반복하는 부분을 for-each라는 특수한 형태의 반복문으로 아래와 같이 작성할 수 있다.

/*	(생략)	*/
        for(char &s : S){	//참조 반복자를 사용
            for(int j=0; j<N; j++)
                cout<<s;
/*	(생략)	*/

Python

더보기
T=int(input())
for _ in range(T):
    N, line = input().split()
    N=int(N)
    for l in line:
        print(l*N,end='')
    print()

 

Line 해설
1~2 정수 T를 입력받고 for문을 통해 반복한다.
3~4 input() 함수로 한줄 입력을 받고 split() 함수로 공백을 기준으로 나누어 N과 line 변수에 대입한다.
N는 정수이므로 형변환까지 해주어야한다
5~7 for 문으로 line 문자열안의 각 문자를 l에 할당하고 반복한다.
print(l*N) 함수로 문자 l를 N번 반복하여 출력하고 end=''를 입력하여 줄바꿈을 하지 않도록 해주어야한다.