Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

방과후 공부

[프로그래머스] Lv.2 JadenCase 문자열 만들기(JAVA) 본문

코딩테스트/프로그래머스

[프로그래머스] Lv.2 JadenCase 문자열 만들기(JAVA)

남 도산 2022. 11. 12. 10:54

https://school.programmers.co.kr/learn/courses/30/lessons/12951

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제


문제 설명

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"

 

2. 풀이

제출 후 채점하기를 누르면 런타임 오류에 실패에 아주 난리도 아니었는데 다양한 테스트케이스를 고려하지 않은 탓이었다.
입력값의 문자길이를 고려하지 않아 런타임 오류가 발생했고, 공백을 기준으로 문자열을 자르다보니 입력값의 맨끝에 있는 공백을 고려하지 못해 실패케이스가 발생했다.
import java.util.*;

class Solution {
    public String solution(String s) {
        
        StringBuilder sb = new StringBuilder();
        String[] arr = s.split(" "); 
        
        
        for (String tmp : arr){
            if (!"".equals(sb.toString())){
                sb.append(" ");
            }
            
            if (tmp.length() > 0){
                sb.append(tmp.substring(0,1).toUpperCase()); 
                
                if (tmp.length() > 1){
                    sb.append(tmp.substring(1).toLowerCase());
                }
            }
        }
        
        if (s.length() > sb.toString().length()){
            sb.append(" ");
        }
        
        return sb.toString();
    }
}​
Comments