- Algorithm
- app
- Database_Design
- programmers
- C
- 티스토리챌린지
- Artificial_Intelligence
- SingleProject
- Unix_System
- tensorflow
- 리눅스마스터2급
- Operating_System
- Kubernetes
- Java
- 2023_1st_Semester
- Linux
- datastructure
- 오블완
- Baekjoon
- cloud_computing
- Univ._Study
- Personal_Study
- kubeflow
- codingTest
- Android
- 자격증
- c++
- study
- Image_classification
- Python
코딩 기록 저장소
[프로그래머스/C++] JadenCase 문자열 만들기 본문
문제 정보
제목 : JadenCase 문자열 만들기
난이도 : Lv.2
사용 언어 : C++
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12951
문제 설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 사항
- s는 길이 1 이상 200 이하인 문자열입니다.
- s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
- 숫자는 단어의 첫 문자로만 나옵니다.
- 숫자로만 이루어진 단어는 없습니다.
- 공백문자가 연속해서 나올 수 있습니다.
입출력 예
s | return |
"3people unFollowed me" | "3people Unfollowed Me" |
"for the last week" | "For The Last Week" |
입출력 예 설명
나의 풀이
공백문자가 연속해서 나올 수 있다는 조건을 보고 index 변수를 설정해서 공백문자의 인덱스값을 저장하기 위해
int index; 변수를 생성했습니다.
s문자열의 길이만큼 반복하는 for문을 생성합니다. 만약 s[i]가 공백(' ')이라면 index변수에 i를 저장합니다. 그리고 공백을 answer에 저장합니다. 공백이 아니라면 여러 조건문을 통해 판별합니다. 만약 문자열의 처음 오는 문자(i==0)가 소문자이거나 공백 다음으로 오는 문자(i == index+1)가 소문자라면 toupper() 함수를 이용해서 대문자로 바꿔줍니다. 이어지는 문자인데 대문자라면(i != index+1) tolower()함수를 이용하여 소문자로 바꿔줍니다.
하지만 문자열의 첫번째 문자가 대문자일땐 이 조건을 만족해버려서 소문자로 바꿔버리는 문제가 발생했습니다.
else if( i != index+1 && isupper(s[i]))
s[i] = tolower(s[i]);
이 문제를 해결하기 위해 고민하던 중 index 변수를 선언 및 초기화할때 초기값으로 -1을 저장하면, i가 0일때 index+1이 0이 되어 조건을 만족하지 않는다는 것을 알게되었습니다. index 변수의 초기값을 바꾸자 올바르게 실행되어 문제를 해결할 수 있었습니다.
코드
#include <string>
#include <vector>
#include <cctype>
using namespace std;
string solution(string s) {
string answer = "";
int index = -1;
for(int i =0 ; i < s.length(); i++ )
{
if ( s[i] == ' ')
index = i;
else
{
if ( i == 0 && islower(s[i]) || i == index+1 && islower(s[i]) )
s[i] = toupper(s[i]);
else if( i != index+1 && isupper(s[i]))
s[i] = tolower(s[i]);
}
answer+=s[i];
}
return answer;
}
'프로그래머스 > Lv.2' 카테고리의 다른 글
[프로그래머스/Python] 숫자의 표현 (0) | 2023.01.20 |
---|---|
[프로그래머스/Python] 이진 변환 반복하기 (0) | 2023.01.19 |
[프로그래머스/Python] 올바른 괄호 (0) | 2023.01.19 |
[프로그래머스/C++] 최솟값 만들기 (0) | 2023.01.19 |
[프로그래머스/C++] 최댓값과 최솟값 (0) | 2023.01.18 |