문제 바로가기
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=''를 입력하여 줄바꿈을 하지 않도록 해주어야한다. |
'Coding > BOJ' 카테고리의 다른 글
[BOJ 백준] 2920 - 음계 (C++) (1) | 2023.11.09 |
---|---|
[BOJ 백준] 2884 - 알람 시계 (C++) (0) | 2023.11.07 |
[BOJ 백준] 2577 - 숫자의 개수 (C / C++ / Python) (0) | 2023.11.05 |
[BOJ 백준] 2562 - 최댓값 (C / C++) (0) | 2023.11.04 |
[BOJ 백준] 2439 - 별 찍기 - 2 (C / C++ / Python) (0) | 2023.11.03 |