1 분 소요

사용 언어: Java


문제

스크린샷 2022-10-22 오전 10 21 11

코드

실패한 코드

코드가 복잡해지기는 했다..
테스트 케이스 두 개는 통과하였지만, 채점을 하니 몇몇 테스트가 런타임 에러로 실패했다.

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]);

스크린샷 2022-10-22 오전 10 51 44

 String str = "ab cd";

String[] arr = str.split(" "); // 공백 제거

System.out.println(arr[0]);
System.out.println(arr[1]);

스크린샷 2022-10-22 오전 10 52 06



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기