일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- effective C++
- PrefixSum
- Zenject
- level1
- programmers
- dirtyflag pattern
- Euclidean
- 프로세스 상태
- binary search
- solid 원칙
- level3
- stack
- 3D RPG
- SWEA
- 8-Puzzle
- LEVEL2
- BFS
- Bronze
- trie
- algorithm
- BOJ
- Project
- Unity
- knapsack Problem
- Modern C++
- Flyweight Pattern
- Silver
- Gold
- 프로그래머스
- two pointer
Archives
- Today
- Total
Patrick's Devlog
[프로그래머스/C++] JadenCase 문자열 만들기 본문
1. 개요
https://school.programmers.co.kr/learn/courses/30/lessons/12951
1-1. 설명
JadenCase는 모든 단어의 첫문자가 대문자이고, 그 외 알파벳은 소문자인 문자열이다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수를 완성한다.
1-2. 제한 사항
- s의 길이 1 이상 200 이하 문자열
- s는 알파벳, 숫자, 공백으로 이루어져 있으며 숫자는 첫 단어의 문자롬나 나옴
- 숫자로만 이루어진 단어 X
- 공백이 연속해서 나올 수 O
2. 구현
2-1. 풀이
split으로 나누어 맨 앞부분은 대문자, 그외는 소문자로 생각하여 풀었다. 그냥 단순하게 s의 앞에 공백이 있는지 확인하고 대문자, 소문자로 바꿔도 되는 것을 너무 돌아서 구현을 해버린 것 같다. 조금 더 간단히 구현할 수 있는 코드를 생각해볼 수 있게 되는 계기가 되었다.
2-2. 코드
#include <iostream>
#include <vector>
#include <sstream>
#include <string>
using namespace std;
vector<string> split(string str, char delimiter);
string solution(string s) {
string result = "";
vector<string> splitStr = split(s, ' ');
int index = 0;
bool blankFlag = false;
if (s[s.size()-1] == ' ') blankFlag = true;
for (string str : splitStr) {
for (int i = 0; i < str.size(); i++) {
if (i == 0 && 'a' <= str[i] && 'z' >= str[i]) str[i] = toupper(str[i]);
if (i != 0 && 'A' <= str[i] && 'Z' >= str[i]) str[i] = tolower(str[i]);
}
if (index != 0) result += ' ';
result += str;
index++;
}
if (blankFlag) result += ' ';
return result;
}
vector<string> split(string input, char delimiter) {
vector<string> result;
stringstream stream(input);
string temp;
while (getline(stream, temp, delimiter)) result.push_back(temp);
return result;
}
'Algorithm > Algorithms Practice' 카테고리의 다른 글
[프로그래머스/C++] 다음 큰 숫자 (0) | 2022.09.27 |
---|---|
[BOJ/C++] 동전 0(11047번) (0) | 2022.09.26 |
[BOJ/C++] 성적 통계(5800번) (1) | 2022.09.23 |
[BOJ/C++] 수들의 합(1789번) (0) | 2022.09.22 |
[BOJ/C++] 1, 2, 3 더하기(9095번) (0) | 2022.09.21 |