코딩 테스트/프로그래머스 코딩테스트
JadenCase 문자열 만들기
ingus kinematics
2022. 10. 4. 14:59
내 풀이
#include <string>
#include <iostream>
using namespace std;
#define ALPHABET_TRANS 32
string solution(string s) {
string answer = "";
int i=0;
bool bSpaceFlag = false;
while(s[i])
{
// 모든 문자에 해당, 대문자 -> 소문자
if(s[i] >= 'A' && s[i] <= 'Z')
{
s[i] += ALPHABET_TRANS;
}
// 첫 번째 문자만 해당, 소문자 -> 대문자
if(s[0] >= 'a' && s[0] <= 'z')
{
s[i] -= ALPHABET_TRANS;
}
// Space Flag : 공백문자를 체크하는 역할
if(s[i] == ' ')
bSpaceFlag = true;
// 공백 문자 이후 + 모든 문자에 해당, 소문자 -> 대문자
if((s[i] >= 'a' && s[i] <= 'z') && bSpaceFlag == true)
{
s[i] -= ALPHABET_TRANS;
bSpaceFlag = false;
}
// 공백 문자 이후 + 숫자, 소문자 변환 취소
if((s[i] >= '0' && s[i] <= '9') && bSpaceFlag == true)
{
bSpaceFlag = false;
}
i++;
}
answer = s;
printf("정답 = %s\n", answer.c_str());
return answer;
}
힘겹게 풀었습니다..
다른분들 풀이 보니까 굉장히 쉽게 하시던데..
쉽게 풀 수 있는 함수인 toupper와 tolower 함수에 대해서 알아보겠습니다.
추가적으로 삼항 조건 연산을 통해서 쉽게 풀이할 수 있는 방법까지...
다른 사람 풀이
*아래 코드는 박소영 님이 짜신 코드입니다.
#include <string>
#include <vector>
using namespace std;
string solution(string s) {
string answer = "";
answer += toupper(s[0]);
for (int i = 1; i < s.size(); i++)
s[i - 1] == ' ' ? answer += toupper(s[i]) : answer += tolower(s[i]);
return answer;
}
풀이
풀이를 해보자면
입력으로 문자열 s가 들어올텐데, 첫 번째 문자를 toupper 함수를 사용해서 대문자로 바꾸어줍니다.
그 이후에 i가 1부터 s.size() 만큼 반복문을 돌려줍니다.
핵심은 반복문 안에서 돌아가는 코드입니다.
s[i - 1] == ' ' ? answer += toupper(s[i]) : answer += tolower(s[i]);
위 코드를 보았을 때, ? 기준으로 양 옆으로나눠야 합니다.
-> 삼항조건 연산자 공부 필요!
- s[i-1] == ' ' 여기서는 이전 문자가 공백인지 아닌지를 체크를 하고 공백이라면 1(true)을 출력, 아니라면 0(false)을 출력합니다.
- answer += toupper(s[i]) : answer += tolower(s[i]) 여기서는 true라면 현재 문자를 대문자로 바꾸고, false라면 현재 문자를 소문자로 바꿉니다.
*c++ 레퍼런스를 참조하면 toupper 함수의 사용법을 알 수 있습니다.
https://cplusplus.com/reference/cctype/toupper/
https://cplusplus.com/reference/cctype/toupper/
function <cctype> toupper Convert lowercase letter to uppercase Converts c to its uppercase equivalent if c is a lowercase letter and has an uppercase equivalent. If no such conversion is possible, the value returned is c unchanged. Notice that what is con
cplusplus.com