#6. [백준_C언어] 2675번 : 문자열 반복

 

 입력 코드 

#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

 

백준 알고리즘 2675번: 문자열 반복 C언어

문제 출처: www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고,

travelerfootprint.tistory.com

mjeong9316.tistory.com/133

 

[C 언어] 백준 2675. 문자열 반복

2675. 문자열 반복 (누르면 해당 문제로 이동) 각 문자를 반복하여 출력하는 문제 제약사항) 시간 : 1 초 메모리 : 128 MB 문제) 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후

mjeong9316.tistory.com

 

 문제 출처 

www.acmicpc.net/problem/2675

 

2675번: 문자열 반복

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

www.acmicpc.net