나만의 작은 도서관

문제 12951. JadenCase 문자열 만들기 본문

프로그래머스 문제풀이/코드카타

문제 12951. JadenCase 문자열 만들기

pledge24 2024. 6. 29. 22:20

문제 링크

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

난이도 : Lv.2

 

문제 요약 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.

입력

  • 문자열 s

입력 제한

  • s는 길이 1 이상 200 이하인 문자열입니다.
  • s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
    • 숫자는 단어의 첫 문자로만 나옵니다.
    • 숫자로만 이루어진 단어는 없습니다.
    • 공백문자가 연속해서 나올 수 있습니다.

입력 예제

// input
"3people unFollowed me"

// ans
"3people Unfollowed Me"

 

풀이 방식

 문자열 s의 문자를 순회하면서 첫번째 문자이거나 이전 문자가 공백(' ')이 있을 때 문자를 대문자로 변경합니다. 그렇지않은 문자는 전부 소문자로 변경합니다. 문자열 s를 모두 순회했다면 answer를 정답으로 반환합니다.

+) 아래 코드에서 toupper/tolower함수는 숫자에 적용되지 않기 때문에 숫자에 대한 추가적인 예외처리를 하지 않아도 됩니다.

 

정답 코드 

더보기
#include <bits/stdc++.h>

using namespace std;

string solution(string s) {
    string answer = "";
    
    for(int i = 0; i < s.length(); i++){
        if(i == 0 || i-1 > 0 && s[i-1] == ' '){
            s[i] = toupper(s[i]);
        }
        else{
            s[i] = tolower(s[i]);
        }
    }
    
    answer = s;
    
    return answer;
}