celina의 이것저것

[백준 c 2675] 문자열 반복 본문

자료구조&알고리즘/백준

[백준 c 2675] 문자열 반복

celinayk 2022. 10. 28. 21:04
반응형

문제

접근

문자열을 반복해서 출력할때 이중반복문을 이용해서 해결할 수 있다

코드

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

int main() {
	
	int n; //테스트의 개수
	int r; //문자열 반복 횟수 
	scanf("%d", &n);
	char s[20]; 

	for (int i = 0; i < n; i++) {
		scanf("%d %s", &r, s); //3 ABC 입력받음

		for (int j = 0; j < strlen(s); j++) { //문자열의 길이만큼 반복 
			for (int k = 0; k < r; k++) {
				printf("%c", s[j]);
			}
		}
		printf("\n");
	}

	return 0;
}

리뷰

1. 첫째 줄에 테스트 케이스의 개수만큼 가장 큰 반복문을 돌려준다.

2. scanf로 문자열의 반복횟수와 문자열을 입력받는다

3. 두번째 반복문으로 문자열의 길이만큼 반복을 해준다.

strlen으로 문자열 s의 길이를 구해준다 

예를들어 예시 "5 /HTP" 은 출력 결과가 "/////HHHHHTTTTTPPPPP"이다.

내가 /HTP를 문자열배열에 입력하고 문자열의 길이를 구하면 4이다.

출력 결과를 보면 /////1개, HHHHH 1개, TTTTT 1개, PPPPP 1개, 총 4번 반복이되니까 문자열의 길이만큼 반복을 하는 것이다

4. r번 반복하는 반복문을 돌려서 같은 문자를 r번씩 출력하면 된다

5. 마지막으로 줄을 바꾸는 printf("\n")를 가장 바깥으로 뺀다.

왜냐하면 j반복문에 넣으면 "AAABBBCCC" 이렇게 출력 되는것이 아니라 

AAA

BBB

CCC

이렇게 문자가 바뀔때마다 줄바꿈이 되기 때문이다 

학습

문자열의 길이만큼 반복해야한다는 생각을 못했던 것 같다

출처

2675번: 문자열 반복 (acmicpc.net)

 

2675번: 문자열 반복

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

www.acmicpc.net

 

Comments