문제 링크
난이도 : 브론즈 2
문제 내용
문자열 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를 출력한다.
문제 분석
T 읽고 T만큼 반복문
R, S읽고 S에 있는 글자 하나하나 반복
R만큼 글자 반복출력
한 케이스 끝나면 줄바꿈
작성한 코드
#include <iostream>
#include <cstring>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int t;
cin >> t;
for (int i = 0; i<t; i++){
int r;
string s;
cin >> r >> s;
for(auto one : s){
for(int j = 0; j < r; j++){
cout << one;
}
}
cout << "\\n";
}
}
우수 코드 분석
#include<cstdio>
int t,r;
char s[21];
int main() {
scanf("%d", &t);
while (t--) {
scanf("%d %s", &r, &s);
for (int i = 0; s[i]; i++) for (int j = r; j--;) putchar(s[i]);
puts("");
}
return 0;
}
For문에서 배열 순회할 때 s[i]이런식으로 하면 알아서 순회하는듯
Int j = r; j—; 이거는 종료조건이 없는데 어떻게 돌아가는거지
⇒ 루프를 위해 증감식의 역할을 하면서도 조건의 역할을 함. J—에 의해 j가 -1이 됨 ⇒ 이전에 j가 0이었음 ⇒ 동작 종료