일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- php 프로그래밍 입문 연습문제
- php 프로그래밍
- 페이코 추천인
- 페이코 친구코드
- C
- 최단 경로
- Java
- 자바
- 플러터 개발환경 설정
- php 프로그래밍 입문 3판
- JAVA SPRING
- 배열
- 자바 스프링
- 백준
- php
- 파이썬
- 페이코 추천인코드
- SWEA
- php 프로그래밍 입문
- C언어
- php 프로그래밍 입문 문제풀이
- spring
- 플러터
- Flutter
- 한정 분기
- 스프링
- programmers
- php 프로그래밍 입문 예제
- php 프로그래밍 입문 솔루션
- 페이코 초대코드
- Today
- Total
ImJay
[C언어] 백준 2675번 : 문자열 반복 본문
백준 2675번 : 문자열 반복
- 사용언어 : C언어
1. 문제
문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다.
QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다.
2. 코드
#include <stdio.h>
#include <string.h>
int main(void) {
int T,R;
char S[20];
scanf("%d", &T);
for(int i=0; i<T; i++) {
scanf("%d %s", &R, S);
for(int j=0; j < strlen(S); j++)
for(int k=0; k<R; k++) printf("%c", S[j]);
printf("\n");
}
}
3. 풀이
먼저 문자열을 출력하는 방법을 익혀야 합니다.
기본적으로 포인터의 개념에 대해 명확히 알고 있으면 좋겠지만,
저 또한 모르기에 일단 포인터를 배제하고 설명드립니다.
배열 S를 %s로 받을 때는 scanf에서 그냥 S를 씁니다.
그렇다면 제가 ABC를 입력했을 때, S[0]에는 무엇이 저장되어 있을까요?
65가 저장되어 있습니다.
이 65의 의미는 무엇일까요?
숫자 65는 아스키코드로 변환하면 바로 A입니다.
여러분이 어려워 했던 부분은, 문자열에서 어떻게 하면 각 문자를 따로 구분할 수 있을지입니다.
예시를 들어보겠습니다.
printf("%d", S[0]);
printf("%s", &S[0]);
printf("%c", S[0]);
위를 출력하면 다음과 같습니다.
65
ABC
A
궁금증이 해결 되셨을 것 같습니다.
%c는 정수를 문자로 변환하여 출력하는데요,
S[0]에는 숫자 65가 저장되어 있고, 이를 %c를 통해 문자로 변환시켜야 A를 출력할 수 있습니다.
이 사실을 알면 문제풀이는 쉬워집니다.
for(int k=0; k<R; k++) printf("%c", S[k]);
반복횟수 R만큼 S[j]를 %c로 출력해주면 됩니다.
for(int j=0; j < strlen(S); j++)
여기서 j의 범위는 문자열의 길이 strlen(S)로 지정해주면 됩니다.
위 반복문을 빠져나간 후 \n으로 줄을 바꿔 주는 것도 유의 하셔야 됩니다.
'백준 - C, C++ > 07. 문자열' 카테고리의 다른 글
[C언어] 백준 1152번 : 단어의 개수 (0) | 2020.10.21 |
---|---|
[C언어] 백준 1157번 : 단어 공부 (0) | 2020.10.20 |
[C언어] 백준 10809번 : 알파벳 찾기 (0) | 2020.10.15 |
[C언어] 백준 11720번 : 숫자의 합 (0) | 2020.10.12 |
[C언어] 백준 11654번 : 아스키 코드 (0) | 2020.10.12 |