입력 코드
#include <stdio.h>
main() {
char s[21];
char p[200];
int t, r;
int i, j, k;
scanf("%d", &t);
for (i = 0; i < t; i++) {
scanf("%d %s", &r, s);
for (j = 0; j < 21; j++)
for (k = 0; k < r; k++)
p[r*j + k] = s[j];
printf("%s\n", p);
}
return 0;
}
코드 설명
배열과 반복 이용하는 문제
ABC문자열을 3번 반복해서 ABCABCABC는 할 수 있는데 AAABBBCCC로 만드려니까 쉽지 않았다.
#include <stdio.h>
main() {
int s[20], p[160];
int t, r;
scanf("%d", &t);
scanf("%d %s", &r, &s);
for (int i,j = 0; i < 20; i++) {
for (int k = 0; k < r; k++) {
p[k] = s[i];
}
p[j] = s[i];
}
printf("%s\n", p);
}
첫 번째 문자 반복은 되는 것 같은데 그다음 문자부터 r번째 인덱스에 넣는 게 문제였다.
#include <stdio.h>
main() {
int s[20], p[160];
int t, r;
scanf("%d", &t);
scanf("%d %s", &r, &s);
for (int i = 0, n = 1; i < 20; i++, n++) {
for (int k = 0; k < r; k++) {
p[n*k] = s[i];
}
}
printf("%s\n", p);
}
인덱스를 문자 여러 개 이용해서 r의 배수를 이용해서 하려고 했는데 그랬더니 처음 문자들은 맞는데 그다음 반복이 또 문제였다. 그리고 여전히 테스트 개수 t를 사용하지 않아서 문자열을 한 번밖에 입력받지 못했다.
결국 시간 초과여서 검색했다.
#include <stdio.h>
main() {
char s[21];
char p[200];
int t, r;
int i, j, k;
scanf("%d", &t);
for (i = 0; i < t; i++) {
scanf("%d %s", &r, s);
for (j = 0; j < 21; j++)
for (k = 0; k < r; k++)
p[r*j + k] = s[j];
printf("%s\n", p);
}
return 0;
}
이렇게 하면 테스트 개수만큼 입력한 다음에 출력이 되는 게 아니라 문자열 입력하고 출력한 뒤에 그다음 문자열을 입력할 수 있게 돼서 이게 아닌 것 같은데 다른 것도 찾아보니까 마찬가지였다.. 뭐지..??
↓↓↓ 참고한 사이트
travelerfootprint.tistory.com/25
문제 출처
'C' 카테고리의 다른 글
#8. [백준_C언어] 2920번 : 음계 (0) | 2021.01.04 |
---|---|
#7. [백준_C언어] 2739번 : 구구단 (0) | 2021.01.04 |
#5. [백준_C언어] 2562번 : 최댓값 (0) | 2021.01.03 |
#4. [백준_C언어] 2557번 : Hello World (0) | 2021.01.03 |
#3. [백준_C언어] 2438번 : 별 찍기 - 1 (0) | 2021.01.02 |