[프로그래머스] Level 2. JadenCase 문자열 만들기
사용 언어: Java
문제
코드
실패한 코드
코드가 복잡해지기는 했다..
테스트 케이스 두 개는 통과하였지만, 채점을 하니 몇몇 테스트가 런타임 에러로 실패했다.
import java.util.*;
class Solution {
public String solution(String s) {
String answer = "";
String[] strArr = s.split(" ");
for (int i=0; i<strArr.length; i++) {
strArr[i] = func(strArr[i]);
}
answer= String.join(" ", strArr);
return answer;
}
public String func(String s) {
char[] charArr = s.toCharArray();
if (charArr[0] >= 'a' && charArr[0] <= 'z') {
charArr[0] = Character.toUpperCase(charArr[0]);
}
for (int i=1; i<charArr.length; i++) {
if (charArr[i] >= 'A' && charArr[i] <= 'Z') {
charArr[i] = Character.toLowerCase(charArr[i]);
}
}
return new String(charArr);
}
}
성공한 코드
풀이 1
class Solution {
public static String solution (String s) {
String answer ="" ;
String[] arr = s.toLowerCase().split(""); // 공백도 문자취급해주기 // [f] [o] [r] [t] ...
// String[] arr = s.toLowerCase().split(" "); // [for] [the] [last] [week]
boolean isSpace = true; // 첫 글자는 무조건 대문자니까.
for (String str : arr) {
answer += isSpace ? str.toUpperCase() : str; // 전 문자가 공백이었다면 str을 대문자로
isSpace = str.equals(" ") ? true : false; // 공백이라면 true로 세팅
}
return answer;
}
}
풀이 2
public class Solution {
public String solution(String s) {
StringBuilder sb = new StringBuilder(); // 문자열을 더하기 위해 StringBuilder 사용
String firstStr = s.charAt(0) + "";
sb.append(firstStr.toUpperCase()); // 첫 글자는 무조건 대문자
for (int i = 1; i < s.length(); i++) {
String cur = s.charAt(i) + "";
if (cur.equals(' ')) { // 공백이면 그대로 넘어가기
sb.append(" ");
}
else if (s.charAt(i - 1) == ' ') { // 전 문자가 공백이면
sb.append(cur.toUpperCase()); // 대문자
} else {
sb.append(cur.toLowerCase()); // 소문자
}
}
return sb.toString();
}
}
StringBuilder
를 사용해 문자열을 합칠 수 있다. 자세한 설명은 이 글을 참고하자.charAt()
을 이용해 String으로 저장된 문자열 중에서 한 글자만 선택해서 char 타입으로 변환할 수 있다.
참고
String[] arr = s.split("");
와 String[] arr = s.split(" ");
의 차이?
String str = "ab cd";
String[] arr = str.split(""); // 공백까지 포함
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
String str = "ab cd";
String[] arr = str.split(" "); // 공백 제거
System.out.println(arr[0]);
System.out.println(arr[1]);
💛 개인 공부 기록용 블로그입니다. 👻