JadenCase 문자열 만들기

2025. 1. 27. 10:51·공부/Code Cata

https://school.programmers.co.kr/learn/courses/30/lessons/12951

 

*초기 코드

#include <string>
#include <vector>
#include <cctype>

using namespace std;

string solution(string s) 
{
    string answer = "";
    bool capitalize = true;

    for (char ch : s)
    {
        if (ch == ' ')
        {
            answer += ' ';
            capitalize = true;
        }
        else
        {
            if (capitalize)
            {
                if (!isalpha(ch))
                {
                    answer += ch;
                    capitalize = false;
                }
                else
                {
                    answer += toupper(ch);
                    capitalize = false;
                }
            }
            else
            {
                answer += tolower(ch);
            }
        }
    }
    
    return answer;
}

 

 

*타인 풀이 참고 코드

#include <string>
#include <vector>
#include <cctype>

using namespace std;

string solution(string s) 
{
    string answer = "";
    
    answer += toupper(s[0]);
    for (int i = 1; i < s.length(); ++i)
    {
        answer[i - 1] == ' ' ? answer += toupper(s[i]) : answer += tolower(s[i]);
    }
    
    return answer;
}

 

처음에 풀었을 때, 첫 번째 글자가 숫자인지 알파벳인지 판단하고 현재 글자가 공백인지 판단하는 작업을 조건문으로 계속 확인하도록 하여 많은 분기문으로 가독성이 좋지 않게 문제를 풀었다.

 

다른 사람 풀이를 보던 중, 첫 번째 글자가 공백인지 혹은 숫자인지 확인을 하지 않고 그냥 answer 문자열에 toupper와 tolower 메서드를 사용해 문자를 추가하여 푼 것을 보고 이게 왜 되는거지..? 라는 생각을 했다.

 

int toupper(int c);

toupper 의 함수 원형을 예시로 살펴보면, char를 매개변수로 전달해 char 타입을 반환받는다고 생각했었는데 내부적으로는 int로 처리하는 것을 확인할 수 있었다.

toupper 는 C스타일 함수로, 기본적으로 ASCII 문자 안에서만 안전하게 변환한다. 그러므로 ASCII 문자가 아닌 다른 문자 즉, 알파벳이 아닌 문자(공백, 숫자, 특수 문자)는 입력 값 그대로 다시 반환하게 되어있다.

 

이로 인해 공백이든 앞에 숫자든 상관없이 앞서 answer에 저장한 문자가 공백이라면 숫자이든 문자이든 상관없이 toupper 함수를 사용하면 문장의 첫 글자는 무조건 대문자로 변환되거나 만약 문장의 첫 글자가 숫자라면 그 숫자 그대로 answer에 저장된다.

'공부 > Code Cata' 카테고리의 다른 글

멀리 뛰기 / 피보나치 수열 활용  (0) 2025.02.05
N개의 최소 공배수  (0) 2025.02.04
최대값과 최솟값  (0) 2025.01.27
개인정보 수집 유효기간  (1) 2025.01.22
햄버거 만들기  (0) 2025.01.20
'공부/Code Cata' 카테고리의 다른 글
  • 멀리 뛰기 / 피보나치 수열 활용
  • N개의 최소 공배수
  • 최대값과 최솟값
  • 개인정보 수집 유효기간
동그래님
동그래님
  • 동그래님
    개발자 동그래
    동그래님
  • 전체
    오늘
    어제
    • 분류 전체보기 (210)
      • 공부 (51)
        • Code Cata (50)
      • 내배캠 (151)
        • TIL (50)
        • C++ (37)
        • Unreal Engine (48)
        • GAS(Gameplay Ability System.. (16)
      • Project (7)
        • Gunfire Paragon (5)
        • Arena Fighters (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    동그래님
    JadenCase 문자열 만들기
    상단으로

    티스토리툴바