KDT 실무형 스프링 백엔드 엔지니어 양성과정 6기 | Algorithm CODEKATA
🆎 JadenCase 문자열 만들기
🏷 관련 주제 : String char String Builder toLowerCase() toUpperCase()

✔️ Solution with toCharArray()
class Solution {
public String solution(String s) {
String answer = "";
char pre = ' ';
for (char c : s.toCharArray()) {
if (pre == ' ' && c >= 'a' && c <= 'z') {
answer += (char) (c - 32);
} else if (pre != ' ' && c >= 'A' && c <= 'Z') {
answer += (char) (c + 32);
} else {
answer += c;
}
pre = c;
}
return answer;
}
}
채점 결과

✔️ Solution with String Builder ⭐
import java.lang.StringBuilder;
class Solution {
public String solution(String s) {
StringBuilder sb = new StringBuilder();
sb.append(s.toLowerCase());
for (int i = 0; i < s.length(); i++) {
String s1 = sb.substring(i, i + 1);
if (i == 0 || s.charAt(i - 1) == ' ') {
sb.replace(i, i + 1, (sb.substring(i, i + 1).toUpperCase()));
}
}
return sb.toString();
}
}
채점 결과

⭐ Solution with toLowerCase() & String Builder ⭐
import java.lang.StringBuilder;
class Solution {
public String solution(String s) {
StringBuilder sb = new StringBuilder();
s = s.toLowerCase();
sb.append(s);
char pre = ' ';
int idx = 0;
for (char c : s.toCharArray()) {
if (pre == ' ' && c >= 'a' && c <= 'z') {
pre = (char) (c - 32);
sb.replace(idx, idx + 1, String.valueOf(pre));
} else {
pre = c;
}
idx++;
}
return sb.toString();
}
}
채점 결과

💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍
📌 오늘 만난 문제 : 매개변수 s를 Jaden Case로 변환하여 반환하시오.
Jaden Case는 각 단어의 첫 글자는 대문자로 그 외의 글자는 소문자로, 알파벳이 아닌 문자는 그대로 변환합니다.
처음에는 문자열.split("")하여 문자열을 비교하는 것보다문자열.toCharArray()로 char로 변환후, 비교하는 것이 더 빠른 것을
99클럽 코테 문제 풀이하면서 경험한 적이 있어서toCharArray()로 변환 후, 반복문으로 대.소문자 비교 후, 변환, 반환할 변수에 할당하여
반복문이 끝난 후, 그 변수를 반환하는 방법으로 문제를 풀었다.
하지만 코드 실행 시간이 좀 오래 걸리는 감이 있어서 다른 문제로 풀이를 시도해 보았다
문자열을 다룰 때는 StringBuilder를 이용하는 것이 좋았던 경험도 있었기 때문에
String Builder를 사용해 보기로 하였다.
문자열에서 대문자로 치환은 toUpperCase()
소문자로 치환은 toLowerCase()메서드를 사용한다.
매개변수로 받은 전체 문자열 s에서 단어의 첫글자에 해당하는 문자의 수보다
그 외의 문자의 수가 더 많을 것으로 예상되어서
문자열 s를 s.toLowerCase()로 모두 소문자로 변환 후,append() 메서드로 String Builder sb에 문자열 s를 추가해 주었다.
그리고 반복문을 돌면서 단어의 첫글자에 해당하는 문자를 잘라toUpperCase()로 대문자로 치환 후,
String Builder의 replace()메서드로 sb에서 단어의 첫글자를 치환한 대문자로 변경해 주었다.
반복문이 끝난 후, String Builder의 toString()메서드로
String Builder에 담긴 문자열을 반환하였다.
char형 변수는 값을 비교하기 편하고
String Builder는 문자열을 합치고 다루기 편하기 때문에
마지막 코드는 첫번째 코드와 두번째 코드를 섞어 보았다.
과연! 아주 약간이지만 두번째 코드보다 조금 더 빠른 코드를 작성할 수 있었다.👍
💬 무엇을 새롭게 알았는지
char형으로 문자 비교하기, 대.소문자 변환하기
String Builder로 문자열 다루기