SW 꿈나무
[Level 1][C] 이상한 문자 만들기 본문
문제
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 조건
- 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
- 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
Example
Input 1 : "try hello world"
Output 1 : "TrY HeLlO WoRlD"
Code
#include <stdio.h> #include <stdbool.h> #include <stdlib.h> #include <string.h> char* solution(const char* s) { int length = strlen(s); // 정수형 변수 length 선언 및 문자열 s의 길이 대입 char array[length]; // length 크기만큼의 문자형 배열 선언 int temp=0; // 정수형 변수 temp 선언 및 초기화 for(int i=0;i<length;i++) { // length만큼 반복 array[i]=s[i]; // 배열 array에 문자열 s 대입 } for(int i=0;i<length;i++) { // length만큼 반복 if(array[i]==' ') { // array[i]가 ' '이고 if(i%2==0) { // i가 짝수이면 temp = 1; // temp = 1 } else { // i가 홀수이면 temp = 0; // temp = 0 } } else { // array[i]가 ' '이 아니고 if((i+temp)%2==0) { // i + temp 가 짝수이고 if(array[i]>='a'&&array[i]<='z') { // array[i]가 소문자이면 array[i]=array[i]-('a'-'A'); // array[i]를 대문자로 변경 } } else { // i + temp 가 홀수이고 if(array[i]>='A'&&array[i]<='Z') { // array[i]가 대문자이면 array[i]=array[i]+('a'-'A'); // array[i]를 소문자로 변경 } } } } char* answer = (char*)malloc(length+1); // answer에 length+1 만큼 메모리 동적 할당 for(int i=0;i<length;i++) { // length만큼 반복 answer[i]=array[i]; // answer에 array 대입 } answer[length]=NULL; // answer 마지막 자리에 NULL문자 대입 return answer; // answer 반환 }
'Algorithm > Programmers' 카테고리의 다른 글
[Level 1][C] 문자열을 정수로 바꾸기 (0) | 2020.03.26 |
---|---|
[Level 1][C] 약수의 합 (0) | 2020.03.26 |
[Level 1][C] 자릿수 더하기 (0) | 2020.03.26 |
[Level 1][C] 자연수 뒤집어 배열로 만들기 (0) | 2020.03.26 |
[Level 1][C] 정수 제곱근 판별 (0) | 2020.03.26 |
Comments