Problem : https://programmers.co.kr/learn/courses/30/lessons/12951
코딩테스트 연습 - JadenCase 문자열 만들기
JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건
programmers.co.kr
Approach
처음에는 공백문자(" ") 한 칸을 기준으로 split을 하여 첫 문자만 UpperCase로 나머지는 LowerCase로 하여 반환하였다.
그런데 공백문자가 한 칸이 아닌 두 칸이상 공백문자가 연속된 테스트케이스가 존재하여 이 방법은 잘못됐다.
그래서 일단 주어진 문자열 s를 toLowerCase()로 모두 소문자로 바꾸고, i - 1번째 문자가 공백문자면 i번째 문자를 UpperCase로 변환하여 StringBuilder에 붙이고, 아닐 경우엔 그대로 StringBuilder에 붙인다.
첫 문자가 공백이면, 다음 문자를 UpperCase로 바꿔 붙인다.
Code
public class JadenCaseString {
public static void main(String[] args) {
JadenCaseString jcs = new JadenCaseString();
String s = "for the last week";
System.out.println(jcs.solution(s));
}
public String solution(String s) {
s = s.toLowerCase();
StringBuilder sb = new StringBuilder();
sb.append(String.valueOf(s.charAt(0)).toUpperCase());
for (int i = 1; i < s.length(); i++) {
if (s.charAt(i - 1) == ' ') {
sb.append(String.valueOf(s.charAt(i)).toUpperCase());
} else {
sb.append(String.valueOf(s.charAt(i)));
}
}
return sb.toString();
}
// 연속된 공백을 못잡는 코드
// public String solution(String s) {
// String[] str = s.toLowerCase().split("[ ]");
// for (int i = 0; i < str.length; i++) {
// System.out.println("str[i] = " + str[i]);
// }
//
// StringBuilder sb = new StringBuilder();
// for (String t : str) {
// String c = String.valueOf(t.charAt(0)).toUpperCase();
// sb.append(c).append(t.substring(1, t.length()) + " ");
// }
//
// return sb.substring(0, sb.length() - 1).toString();
// }
}
'Algorithm > Programmers' 카테고리의 다른 글
[java] 프로그래머스 (짝지어 제거하기) Level 2 (0) | 2021.01.16 |
---|---|
[java] 프로그래머스 (N개의 최소공배수) Level 2 (0) | 2021.01.16 |
[java] 프로그래머스 (행렬의 곱셈) Level 2 (0) | 2021.01.16 |
[java] 프로그래머스 (피보나치 수) Level 2 (0) | 2021.01.14 |
[java] 프로그래머스 (최솟값 만들기) Level 2 (0) | 2021.01.14 |