https://school.programmers.co.kr/learn/courses/30/lessons/12951
문제 해결 과정
착안
공백을 기준으로 단어를 나눈 다음, 단어의 첫 글자를 대문자, 나머지 글자를 소문자로 변환한 결과 문자열을 누적하여 연결(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;
}
실행 결과
'C++ 코딩 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[Programmers] 다음 큰 숫자 (0) | 2023.08.15 |
---|---|
[Programmers] 숫자의 표현 (0) | 2023.08.15 |
[Programmers] 이진 변환 반복하기 (0) | 2023.07.30 |
[Programmers] 최솟값 만들기 (0) | 2023.07.30 |
[Programmers] 정수 삼각형 (0) | 2023.07.21 |
댓글