본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+ Java언어 내용도 포함되어있습니다. )
https://school.programmers.co.kr/learn/courses/30/lessons/12951?language=java
1.문제설명
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다.
단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고) 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.
제한 조건
s는 길이 1 이상 200 이하인 문자열입니다.s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
숫자는 단어의 첫 문자로만 나옵니다.숫자로만 이루어진 단어는 없습니다.공백문자가 연속해서 나올 수 있습니다.
2. 문제해결 접근
- 띄어쓰기 다음 첫 문자를 문자로 지정한다 -> split(" ")으로 띄어쓰기로 문자열을 나눈 후, 나눈 배열값마다 첫 인덱스를 지정
- 지정한 문자가 숫자나 소문자가 아닐때, 대문자로 지정 -> substring()으로 첫 문자 하나만을 지정 toUpperCase()로 대문자로 바꿔 저장한다.
- 첫 문자가 숫자일 경우, 숫자 그대로 출력한다 -> 고려할 필요 없었음
- 그 이외의 다른 무자는 소문자로 변환한다 -> substring()으로 첫문자 이후 문자열끝까지를 지정, toLowerCase()로 소문자로 바꿔 저장한다.
- 공백문자가 연속해서 나올 경우 하나로 바꾼다 -> 위의 경우를 순차적용 후, 배열의 마지막 값에 하나의 공백문자를 추가한다
- 원래의 문자열 마지막이 공백일 경우는 그대로 유지해야한다
- 위 반복문에서 마지막에 공백이 더하는 로직이 포함되어있으므로, 마지막 값의 공백을 제거하는 로직이 필요하다.
3.답안 : [언어 : java ]
class Solution {
public String solution(String s) {
String answer = "";
//split()를 이용하여 공백을 기준으로 문자열 자르기
String[] sp = s.split(" ");
for (int i = 0; i < sp.length; i++) {
// System.out.println( sp[i] );
// 만약, sp에 빈문자열이 들어있다면, 공백을 추가해여 배열을 채워준다.
if( sp[i].length() == 0 ) answer += " ";
else {
// sp[i]의 첫문자 하나만 대문자로 전환한다
answer += sp[i].substring(0, 1).toUpperCase();
// sp[i]의 두번째문자부터 문자끝까지
answer += sp[i].substring(1, sp[i].length()).toLowerCase();
answer += " ";
}
}
// 원래의 문자열 마지막이 공백일 경우에, 그대로 answer 반환
if(s.substring(s.length()-1, s.length()).equals(" "))return answer;
//위 반복문에서 마지막에 공백이 더해져 그 공백을 제외한 answer 값 반환
return answer.substring(0, answer.length()-1);
}
}
4. C++ 답안
C++경우는 보다 간결하게 처리되었다.
#include <string>
#include <vector>
using namespace std;
string solution(string s) {
string answer = "";
// 문자열 s[0] 대문자로 변환한다.
answer += toupper(s[0]);
for(int i=1; i<s.size(); i++){
// 0번째 인덱스가 빈문자일경우
if(s[i-1] == ' '){
// 다음인덱스를 대문자로 변환하여 저장한다
answer += toupper(s[i]);
}else{
// 나머지는 소문자로 저장한다.
answer += tolower(s[i]);
}
}
return answer;
}
5. C++ 문법 설명과 표현법
c++ 에서는 toupper(인덱스), tolower(인덱스)로 표현한다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=kimjd921&logNo=40198075816
'알고리즘 > [프로그래머스]Lv.2' 카테고리의 다른 글
[프로그래머스]Lv2. 다음 큰 숫자 (1) | 2022.11.02 |
---|---|
[프로그래머스]Lv2. 최솟값 만들기 (0) | 2022.11.01 |
[프로그래머스]Lv2. 숫자의 표현 (0) | 2022.11.01 |
[프로그래머스]Lv2. 올바른 괄호 (0) | 2022.10.31 |
[프로그래머스]Lv2. 피보나치 수 (0) | 2022.10.31 |