<프로그래머스 C++> Jaden Case 문자열 만들기 풀이( toupper(), tolower() )
2026. 6. 10. 10:09ㆍProgrammers
문제
모든 단어의 첫 문자는 대문자, 나머지는 소문자인 Jaden Case 문자열로 변환하는 문제이다.
첫 문자가 숫자일 경우 이어지는 알파벳은 소문자로 쓴다.
공백이 연속으로 나올 수 있다.

풀이 아이디어
substr로 단어를 나눠서 처리해야겠다 라고 생각했으나 문자를 하나씩 순회하면서 처리하는 것이 더 단순할 것 같아 이렇게 처리했다.
공백 다음 문자 또는 첫번째 문자가 대문자, 그 외는 전부 소문자이다.
i == 0이거나 s[i-1] == ' '일 때 단어의 시작으로 판단하면 된다.
문제 풀이
#include <string>
#include <vector>
using namespace std;
string solution(string s) {
string answer = "";
for(int i = 0; i < s.size(); ++i)
{
char a;
if(i == 0 || s[i-1] == ' ')
a = toupper(s[i]);
else
a = tolower(s[i]);
answer += a;
}
return answer;
}
코드 흐름
1. 단어 시작 판별
if(i == 0 || s[i-1] == ' ')
a = toupper(s[i]);
else
a = tolower(s[i]);
두 가지 경우에 대문자로 변환한다.
- i == 0 : 문자열의 첫 번째 문자
- s[ i - 1 ] == ' ' : 바로 앞 글자가 공백인 경우 (공백 다음의 문자는 단어의 시작이기 때문)
공백이 연속으로 나오는 경우도 자동으로 처리된다. toupper()를 공백에 적용해도 공백 그대로 반환되기 때문이다.
2. 대소문자 변환
a = toupper(s[i]); // 대문자로 변환
a = tolower(s[i]); // 소문자로 변환
toupper(), tolower()는 <cctype> 헤더에 정의된 함수다.
알파벳이 아닌 문자(숫자, 공백)에 적용하면 그대로 반환한다.
그래서 첫 문자가 숫자인 경우도 별도 처리 없이 자연스럽게 처리된다.
핵심 포인트
- 단어 시작은 i == 0 또는 s[i-1] == ' '으로 판별한다
- toupper(), tolower()는 알파벳이 아닌 문자에 적용해도 그대로 반환하므로 숫자/공백 예외 처리가 필요 없다
'Programmers' 카테고리의 다른 글
| <프로그래머스 C++> 피보나치 수 풀이(재귀 함수) (0) | 2026.06.12 |
|---|---|
| <프로그래머스 C++> 이진 변환 반복하기 풀이 (0) | 2026.06.11 |
| <프로그래머스 C++> 최댓값과 최솟값 풀이(stringstream, climits) (0) | 2026.06.09 |
| <프로그래머스 C++> 신고 결과 받기 풀이 (0) | 2026.06.08 |
| <프로그래머스 C++> 공원 산책 풀이 (0) | 2026.06.04 |