[프로그래머스] JadenCase 문자열 만들기 | C++
Algorithm/문제풀이
2022. 12. 26. 19:14
문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문자열 s가 주어지면 공백을 기준으로 단어를 나눈다.
단어의 맨 처음 글자는 대문자, 나머지 글자는 소문자로 반환하는 문제였다.
원래 내가 쓴 풀이가 있는데, 몇몇 TC에서 실패를 내보냈다. (뒤에서 참고)
그래서 타인의 훌륭한 풀이를 참고하였다.
풀이 전략
첫 글자를 대문자화해서 answer에 담는다.
두번째 글자부터 for 문으로 공백을 찾아서 변환해간다.
상세
1. answer에 s의 첫 번째 글자를 대문자화 해서 담는다.
더보기
answer += toupper(s[0]);
2. 두 번째 글자부터 일순하여
이전 칸이 공백이라면 대문자화,
아니라면 소문자화 해서 answer에 담는다.
더보기
for(int i = 1; i < s.size(); ++i)
{
if(s[i - 1] == ' ')
answer += toupper(s[i]);
else
answer += tolower(s[i]);
}
전체 소스코드
#include <string>
using namespace std;
string solution(string s) {
string answer = "";
answer += toupper(s[0]);
for(int i = 1; i < s.size(); ++i)
{
if(s[i - 1] == ' ')
answer += toupper(s[i]);
else
answer += tolower(s[i]);
}
return answer;
}
기존 나의 풀이와 틀렸던 점
(아직 미해결)
원래 나는 임시저장소(store)에 담아두는 풀이를 자주 썼다.
공백을 기준으로 일단 단어를
그런데 틀렸다.
#include <vector>
#include <string>
using namespace std;
string solution(string s) {
string answer = "";
string store;
s.push_back(' ');
for(char ch : s)
{
if(ch == ' ')
{
if(store.size())
{
store[0] = toupper(store[0]);
for(int i = 1; i < store.size(); ++i)
store[i] = tolower(store[i]);
store.push_back(' ');
answer += store;
store.clear();
}
}
else store.push_back(ch);
}
answer.pop_back(); // last whitespace remove
return answer;
}
'Algorithm > 문제풀이' 카테고리의 다른 글
[프로그래머스] 소수 찾기 | C++ (2) | 2023.01.07 |
---|---|
[프로그래머스] 2 x n 타일링 | C++ (0) | 2023.01.03 |
[프로그래머스] 다음 큰 숫자 | C++ (0) | 2022.12.26 |
[프로그래머스] 다리를 지나는 트럭 | C++ (0) | 2022.12.23 |
[프로그래머스] 숫자의 표현 | C++ (0) | 2022.12.23 |