[프로그래머스] JadenCase 문자열 만들기

jmjgirl·2023년 11월 3일
0

프로그래머스

목록 보기
9/47
post-thumbnail

📚 문제 설명

JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고)
문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요.


제한사항

  • s는 길이 1 이상 200 이하인 문자열입니다.
  • s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
    ◽ 숫자는 단어의 첫 문자로만 나옵니다.
    ◽ 숫자로만 이루어진 단어는 없습니다.
    공백문자가 연속해서 나올 수 있습니다.

🔎 입출력 예


💻 처음으로 푼 코드

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        String[] arr = s.split(" ");
        
        for(int i=0; i<arr.length; i++) {
            arr[i] = arr[i].toLowerCase();

            for(int j=0; j<arr[i].length(); j++) {
                if(arr[i].charAt(j) >= 'a' && arr[i].charAt(j) <= 'z') {
                    arr[i] = Character.toUpperCase(arr[i].charAt(j)) + arr[i].substring(j+1);
                    break;
                } else if(arr[i].charAt(j) >= '0' && arr[i].charAt(j) <= '9') {
                    arr[i] = arr[i];
                    break;
                } 
            }
        }
        
        answer = String.join(" ", arr);
        
        return answer;
    }
}

하지만 실행 결과 테스트 8번 실패... 😂

8번 테스트를 왜 실패할까 찾아봤더니 s 문자열의 맨뒤 공백이 2개 이상일때도 생각해줘야했다.... 나는 공백으로 문자열을 자르고 조립하면서 맨 뒤 공백은 신경쓰지 않았다..

마지막에 나올 공백을 생각해서 코드를 다시 짜보자


💻 최종 수정 코드

import java.util.*;

class Solution {
    public String solution(String s) {
        String answer = "";
        String[] arr = s.split(" ");
        
        for(int i = 0; i < arr.length; i++) {
            
            // 문자열의 길이가 0이라면 공백 추가
            if(arr[i].length() == 0) answer += " "; 
            
            else {
                answer += arr[i].substring(0, 1).toUpperCase(); 
                answer += arr[i].substring(1, arr[i].length()).toLowerCase(); 
                answer += " "; 
            }
            
        }
        
        // 입력 받은 문자열의 맨 마지막이 " " 라면 바로 answer 반환
        if(s.substring(s.length() -1, s.length()).equals(" ")) return answer;
        
        // 맨 마지막 " " 제거하고 answer 반환
        return answer.substring(0, answer.length() - 1);
        
    }
}

📖 Solution

먼저 공백으로 문자열을 잘라 배열을 만든 후 문자열의 길이가 0인 곳은 공백이니까 answer에 공백을 추가하도록 하였다.

그리고 첫문자는 대문자, 나머지는 소문자로 한뒤 answer에 추가하고 그 뒤 공백을 더 추가했다.

이렇게 반복문을 돈후 만약 입력 많은 문자열 s의 맨 마지막이 공백이였다면 그대로 answer을 return하고 만약 아니라면 마지막 공백을 제거해줘야한다.

profile
개발자로 가는 👣

0개의 댓글