프로그래머스 - JadenCase 문자열 만들기
https://school.programmers.co.kr/learn/courses/30/lessons/12951
String 문자열 조작 및 케이스 생각 문제
접근방법
1. split(" ") 를 활용해서 배열을 만들어줌
split(" ")으로 나눠주면 배열의 형식은 띄어쓰기가 있는 곳을 비어있는 배열로 배정하여 진행함 ex) String s = " abc" 일때 split(" ")을 진행하면 [, , , abc] 가 나온다.
2. 케이스들을 생각해줘야했다. 띄어쓰기만 계속 나오는 케이스, 문자의 마지막이 띄어쓰기로 끝날 케이스..
코드
class Solution {
public String solution(String s) {
String answer = "";
// 케이스들을 생각해야하는 문제
// 공백이 여러번 나올 케이스
// 마지막이 공백이 될 케이스
// 다 자른 다음에 넣어줌
String arr[] = s.split(" ");
for(int i = 0 ; i < arr.length ; i++){
// 공백이 왔을 때, 추가해줄 것
if(arr[i].length() == 0){
answer += " ";
} else {
// 일반적인 추가
arr[i] = arr[i].substring(0,1).toUpperCase() + arr[i].substring(1,arr[i].length()).toLowerCase() + " ";
answer += arr[i];
}
}
// 처음 문자에 마지막에 띄어쓰기가 있었을 경우
if(s.substring(s.length()-1, s.length()).equals(" ")){
return answer;
} else {
return answer.substring(0, answer.length()-1);
}
}
}
일단 split(" ") 이 배열로 어떻게 저장되는지 다시 확인해볼 필요가 있었다. 나는 띄어쓰기 부분을 제외하고 저장이 된다고 생각했었는데, 띄어쓰기 부분은 빈 문자열로 저장이 되는 방식이었다. 유념하기.
그리고 케이스에 대한 부분을 생각하였을 때, 내가 빈 문자열을 마주칠 때 (띄어쓰기 였던 부분을 split) 띄어쓰기를 answer에 추가해줘야하는 부분이 1번, 원래 문자열 s가 마지막에 띄어쓰기를 가지고 있는 케이스가 2번이다.
1번은 arr[i]의 길이가 0 일 때에 answer (String) 에 공백을 더해줬다.
2번은 만약에 원래 문자열의 마지막 글자가 " "인 경우 그대로 리턴을 해주었고, 그게 아니라면 연산 중에 공백이 추가되었으므로 그 공백 이전까지를 리턴해주었다.