연습문제 - 이상한 문자 만들기
문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백 문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 조건
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준) 별로 짝/홀수 인덱스를 판단해야 합니다.
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
입출력 예
s |
return |
try hello world |
TrY HeLlO WoRlD |
입출력 예 설명
try hello world는 세 단어 try, hello, world로 구성되어 있습니다. 각 단어의 짝수번째 문자를 대문자로, 홀수번째 문자를 소문자로 바꾸면 TrY, HeLlO, WoRlD입니다. 따라서 TrY HeLlO WoRlD를 리턴
풀이
- 주의해야 할 점은 문자열 전체의 인덱스가 아닌 단어(공백을 기준) 별로 인덱스를 판단하는 것이었다.
- count 변수를 사용하여 공백을 기준으로 단어별로 짝/홀수를 판단할 수 있도록 하였다.
- result 변수는 한 문자씩 구분하기 위해 사용되었다.
- 조건에 % 연산자를 사용하여 2로 나누었을 때 나머지가 0이 나오는 형태를 짝수로 생각하여 그 경우 toupper()를 사용하여 대문자로 변환하였다. 반대로 홀수일 경우는 tolower()를 사용하여 소문자로 변환하였다.
코드(C++)
#include <string>
#include <vector>
#include <iostream>
using namespace std;
string solution(string s) {
string answer = "";
int count=0;
for(int i=0;i<s.length();i++){
int result = s.at(i);
if (s.at(i)==' ')
count=0;
else {
if (count%2==0){
result=toupper(result);
count++;
}
else {
result=tolower(result);
count++;
}
}
answer += result;
}
return answer;
}
결과
'Programming > Programming 풀이' 카테고리의 다른 글
[Algorithm] 문자열 재정렬 (C++) (719) | 2020.10.17 |
---|---|
[Baekjoon] 18406번 럭키 스트레이트(C++) (460) | 2020.10.17 |
[Algorithm] 그리디 알고리즘 - 거스름돈 문제(C++) (0) | 2020.09.26 |
[Programmers] 체육복 풀이(C++) (0) | 2020.09.26 |
[Programmers] 시저 암호 풀이(C++) (0) | 2020.09.11 |