-
[C++] JadenCase알고리즘/programmers 2020. 4. 6. 20:31
우리가 흔히 접할 수 있는 모든 단어의 앞 문자만을 대문자로 변경하는 문제이다.
[코드]
#include <iostream> #include <string> using namespace std; int main() { cin.tie(NULL); cout.tie(NULL); ios::sync_with_stdio(false); string imsi; getline(cin,imsi); //1. 모든 대문자를 소문자로 바꾸기 for (int i = 0; i < imsi.length(); i++) { if (imsi[i] >= 'A' && imsi[i] <= 'Z') { imsi[i] += 32; } } for (int i = 0; i < imsi.length(); i++) { //2-1. 맨 첫번째 글자 소문자일때 대문자로 if (i == 0 && (imsi[i] >= 'a' && imsi[i] <= 'z')) { imsi[i] -= 32; } //2-2. 공백 다음 문자가 소문자일경우 대문자로 바꾸기 if (imsi[i] == ' ' &&(imsi[i+1] >= 'a' && imsi[i+1] <= 'z')) { imsi[i + 1] -= 32; } } cout << imsi; return 0; }
여러가지 변수가 있었다.
1. 문자들 사이에 뜬금없이 대문자가 있을 경우 2. 맨 첫번째 문자가 알파벳이 아닐경우
문제를 해결하기위해서 2단계를 거쳤다.
1. 모든 대문자를 소문자로 바꾸기 -> 문자 중간에 대문자 있을때 대비 2. i 번째 문자가 공백이고 i+1 번째 문자가 소문자일때 대문자로 바꾸기 -> 단, i=0 (맨 처음 문자 일때는 그전에 공백이 없으니 따로 처리)
'알고리즘 > programmers' 카테고리의 다른 글
[c++] kakao_winter_19_01(인형 뽑기) (0) 2020.04.16