https://www.acmicpc.net/problem/2675
2675번: 문자열 반복
문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다
www.acmicpc.net
입력받은 문자열은 입력받은 정수번 반복하여 출력하는 문제. 만약 3과 ABC가 입력되었다면 AAABBBCCC라는 문자열을 만들어 출력한다.
각 문자열에 접근해 R번 반복하고자 하지만, 아직 해결하지 못했다.
2021.08.09 현재 풀이
#include <stdio.h>
#include <string.h>
int main(){
int T, R; // 테스트 케이스, 반복 횟수
char S[21]; // 입력받는 문자열
// char P[161]; // 내보낼 문자열
int idx;
scanf("%d", &T);
for (int i=0; i<T; i++) {
scanf("%d %s", &R, S);
char P[161] = "";
idx = 0;
// printf("%d %s\n", R, S);
while (S[idx] != '\0') {
char *temp = &S[idx];
printf("%c\n", S[idx]);
for (int i = 0; i < R; i++){
strcat(P, S);
printf("cat: %s\n",P);
}
idx++;
}
printf("%s\n", P);
}
return 0;
}
-------------------------------------------------------21.08.10 풀이 완료-------------------------------------------------------
string.h 헤더파일을 통해 풀이하고자 하였지만, 내가 원하는 대로 잘 되지 않았다.
안쪽 while문에서 문자 하나하나씩 strcat을 통해 P에 붙이려고 했지만, 문자와 문자열의 차이로 인해 잘 안되는 것 같았다(추정).
이를 해결하고자, 포인터도 쓰고 별짓 다했지만, 그럼에도 해결이 안됐기 때문에, 그냥 string.h를 버리고 다른 방법으로 풀었다.
결국 하나의 문자를 R번 반복하여 문자열에 넣으면 되기 때문에 P에 하나씩 넣는 방법을 택했다.
#include <stdio.h>
// #include <string.h>
int main(){
int T, R; // 테스트 케이스, 반복 횟수
char S[21]; // 입력받는 문자열
// char P[161]; // 내보낼 문자열
int idx;
scanf("%d", &T);
for (int i=0; i<T; i++) {
scanf("%d %s", &R, S);
char P[161] = "";
idx = 0;
// printf("%d %s\n", R, S);
while (S[idx] != '\0') {
// char *temp = &S[idx];
// printf("%c\n", S[idx]);
// for (int i = 0; i < R; i++){
// strcat(P, S);
// printf("cat: %s\n",P);
// }
for (int i=0; i<R; i++) {
P[idx*R+i] = S[idx];
}
idx++;
}
printf("%s\n", P);
}
return 0;
}
'coding_test > BAEKJOON' 카테고리의 다른 글
백준 1152번 C언어 풀이 (0) | 2021.08.11 |
---|---|
백준 1157번 C언어 풀이 (0) | 2021.08.10 |
백준 10809번 C언어 풀이 (0) | 2021.08.07 |
백준 1065번 C언어 풀이 (0) | 2021.08.06 |
백준 4673번 C언어 풀이 (0) | 2021.08.06 |