코딩테스트/JAVA

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

할루솔이 2023. 6. 5. 21:50
반응형

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

제한 조건
s는 길이 1 이상 200 이하인 문자열입니다.
s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다.
숫자는 단어의 첫 문자로만 나옵니다.
숫자로만 이루어진 단어는 없습니다.
공백문자가 연속해서 나올 수 있습니다.
입출력 예
s return
"3people unFollowed me" "3people Unfollowed Me"
"for the last week" "For The Last Week"
※ 공지 - 2022년 1월 14일 제한 조건과 테스트 케이스가 추가되었습니다.

 


 

import java.util.*;
class Solution {
    public String solution(String s) {
        String answer = "";
        String[] str = s.split(" "); //공백을 기준으로 분리
        if(s.substring(s.length() - 1, s.length()).equals(" ")) { //문자열 마지막에 공백
            str[str.length-1] += " ";//마지막에 공백 넣어주기
        }
        for(int i=0;i<str.length;i++){//배열 길이만큼
            for(int j=0;j<str[i].length();j++){//배열[i] 문자열 길이만큼
                if(j==0){//앞자리니까 대문자 필요
                    answer += str[i].toUpperCase().charAt(j);
                }else{//나머지는 소문자
                    answer += str[i].toLowerCase().charAt(j);
                }
            }
            if(i != str.length-1){ //마지막 순서가 아닐때만 공백
                answer+=" ";
            }
        }
        return answer;
    }
}

 

문자 풀다가 갑자기 며칠 전 풀었던 문제가 생각나서 공백 기준으로 문자열을 구분했다.

반복문을 돌려서 각 문자열마다 맨 앞글자를 대문자로 바꿔주고 나머지는 모두 소문자로 넣어주었다.

answer에 붙여넣을때 공백도 필요하기때문에 마지막 문자열이 아닐때만 공백을 넣어주고

코드 실행을 하니까 성공!

제출 후 채점하기를 했는데......

 

8번 케이스만 실패..?

찾아봤더니 8번 케이스 문제는 마지막에 공백이 들어있는 문자라고 했다.

내 코드는 공백을 기준으로 구분했기때문에 마지막 공백도 사라진 것..!

 

조건문으로 문자열 맨 마지막 문자가 공백인지 확인하고 

공백이 있을 경우엔 공백을 추가해주었다.

 

다시 채점해보니 성공!!

반응형