문제 설명
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번 케이스 문제는 마지막에 공백이 들어있는 문자라고 했다.
내 코드는 공백을 기준으로 구분했기때문에 마지막 공백도 사라진 것..!
조건문으로 문자열 맨 마지막 문자가 공백인지 확인하고
공백이 있을 경우엔 공백을 추가해주었다.
다시 채점해보니 성공!!
'코딩테스트 > JAVA' 카테고리의 다른 글
| [JAVA/프로그래머스] 최솟값 만들기 (0) | 2023.06.07 |
|---|---|
| [JAVA/프로그래머스] 올바른 괄호 (0) | 2023.06.06 |
| [JAVA/프로그래머스] 최댓값과 최솟값 (1) | 2023.06.04 |
| [JAVA/프로그래머스] 예산 (0) | 2023.05.31 |
| [JAVA/프로그래머스] 최대공약수와 최소공배수 (0) | 2023.05.30 |