본문 바로가기
C++ 코딩 문제 풀이/프로그래머스

[Programmers] JadenCase 문자열 만들기

by 섬댕이 2023. 7. 28.

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

 

프로그래머스

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

programmers.co.kr

 


 

문제 해결 과정

착안

공백을 기준으로 단어를 나눈 다음, 단어의 첫 글자를 대문자, 나머지 글자를 소문자로 변환한 결과 문자열을 누적하여 연결(concatenation)함으로써 문제를 해결하고자 하였다. 공백의 경우에는 별도의 처리 없이 문자열을 연결하고자 하였다.

 

구현

주어진 문자열 내의 단어들을 공백을 기준으로 구분하여 부분문자열(substring)을 구하기 위해 <string> 헤더에 포함된 find_first_of() 함수와 substr() 함수를 활용하였으며, 문자의 대소문자 변환은 toupper(), tolower() 함수를 활용하였다.

 

[스포 주의] 아래 '더보기'를 누르면 코드가 나오니 주의하세요~

더보기
#include <string>

using namespace std;

string solution(string s)
{
	string answer;
	while ((int)s.size() > 0)
	{
		while (s[0] == ' ')
		{
			answer += " ";
			s = s.substr(1);
		}

		int end = (int)s.find_first_of(' ');
		string word = s.substr(0, end);
		for (int i = 0; i < word.size(); i++)
			word[i] = i ? tolower(word[i]) : toupper(word[i]);

		answer += word;

		if (end == string::npos)
			break;

		s = s.substr(end);
	}

	return answer;
}

 

실행 결과

댓글